1

我有一个对象数组,称为长度为 300 的季节,我尝试搜索某个属性“日期”并将其添加到数组中(如果之前没有找到)。到目前为止我有

var day=[];
for (var i=1; i<300; i++) {
    var found=false;
    for (var j=0; j<day.length; j++) {
        if (day[j]==seasons[i]["Date"]) {
            found=true;
            break;
        }
        if (!found) {
            day[day.length]=seasons[i]["Date"];
        }
    }
}

我不太确定哪里出了问题,希望能得到一些帮助。谢谢

4

1 回答 1

1

break退出了内部 for 循环,因此该if (!found)块永远不会执行。

只需将其放在内部循环之后:

for (var i = 1; i < 300; i++) {
    var found = false;
    for (var j = 0; j < day.length; j++) {
        if (day[j] == seasons[i]["Date"]) {
            found = true;
            break;
        }
    }
    if (!found) {
        day[day.length] = seasons[i]["Date"];
    }
}

或者在 if 块中执行:

for (var i = 1; i < 300; i++) {
    for (var j = 0; j < day.length; j++) {
        if (day[j] == seasons[i]["Date"]) {
            day[day.length] = seasons[i]["Date"];
            break;
        }
    }
}

我想后一种解决方案更容易理解。

于 2013-11-09T14:42:19.863 回答