javascript - 关于push()合并数组的问题。

查看:144
本文介绍了javascript - 关于push()合并数组的问题。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var scores = [90,70,58,60];
var newScores = [88, 55, 60];
for(var i = 0; i < scores.length; i++){
    for(var j = 0; j < newScores.length; j++){
        if(scores[i] !== newScores[j]){
        scores.push(newScores[j]);
        }
    }
}

解决方案

你的去重算法不对,在第二个循环里,每个都是跟 scores 某个固定位置的进行比较的,并没与它所有的进行比较。所以你这个程序会一直跑下去直到把资源耗光。

正确的逻辑是:把当前要加入的某个值,与原来已经存在的所有值进行对比,一但找到有相同的,则中止 循环,抛弃这个值,去处理下一个要加入的值。如果找完都没找到相同的,则加进去

var scores = [90, 70, 58, 60];
var newScores = [88, 55, 60];

for (var j = 0; j < newScores.length; j++) {
    var found = false;
    for (var i = 0; i < scores.length; i++) {
        if (scores[i] === newScores[j]) {
            found = true;
            break;
        }
    }
    if (!found) {
        scores.push(newScores[j]);
    }
}

如果使用 Array.prototype.indexOf 来检索已存在的值,逻辑会更清楚

var scores = [90, 70, 58, 60];
var newScores = [88, 55, 60];

for (var j = 0; j < newScores.length; j++) {
    if (scores.indexOf(newScores[j]) < 0) {
        scores.push(newScores[j]);
    }
}

这篇关于javascript - 关于push()合并数组的问题。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆