Javascript 过滤器不公平
Javascript filter was unfair
我正在尝试从一个数组中获取 existCount,该数组在所选数组中具有 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
我错在哪里?
我该如何解决?
谢谢!
如果您使用三等号 ===
,请确保比较的两个值的类型相同。我怀疑 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
我正在尝试从一个数组中获取 existCount,该数组在所选数组中具有 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
我错在哪里?
我该如何解决?
谢谢!
如果您使用三等号 ===
,请确保比较的两个值的类型相同。我怀疑 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