JavaScript过滤器不公平

时间:2018-11-19 23:58:45

标签: javascript chrome-debugging

我正在尝试从一个数组获取存在计数,该数组在所选数组中具有ID。

但是出了点问题,我有一个id = 5493项,但existCount.length 0

我的JS代码:

var existCount = $scope.selectedScript.filter(function (item) {
    return item.id === script.script_id;
});
console.log('existCount.length ', existCount.length);
console.log('$scope.selectedScript ', $scope.selectedScript);
console.log('script.script_id ', script.script_id);

Chrome控制台视图:

https://i.stack.imgur.com/4UVWw.png

//抱歉,我忘了第一行输出,但是该行在$scope.selectedScript的顶部,它是existCount.length = 0

我的错在哪里?

我该如何解决?

谢谢!

2 个答案:

答案 0 :(得分:1)

return item.id === script.script_id;更改为return item.id == script.script_id;

在您的情况下: item.id 是一个数字, script.script_id 是一个字符串。您可以在Chrome调试中按颜色查看它,黑色表示字符串,蓝色表示数字。

===是在JS中比较的困难方法。

您可以在https://stackoverflow.com/a/359509/8572205

看到

所以===返回 false ,并且没有项目添加到 existCount

答案 1 :(得分:0)

如果您使用三等式===,请确保比较的两个值都属于同一类型。我怀疑script.script_id是一个字符串。

尝试将===更改为==