Javascript 过滤器不公平

Javascript filter was unfair

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

但是出了点问题,我有一个 id = 5493existCount.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

我错在哪里?

我该如何解决?

谢谢!

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

尝试将 === 更改为 ==

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

在你的例子中:item.id 是一个数字,script.script_id 是一个字符串。你可以在 chrome debug 中看到它,颜色为黑色,字符串为黑色,数字为蓝色。

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

你可以在

看到

所以 === return false 并且没有项目添加到 existCount