Фильтр Javascript был несправедливым - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь получить existCount из массива с идентификатором в выбранном массиве.

Но что-то пошло не так, у меня был элемент с 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 голосов
/ 20 ноября 2018

Измените return item.id === script.script_id; на return item.id == script.script_id;

В вашем случае: item.id было числом, script.script_id было строкой.Вы можете увидеть это в хромовой отладке по цвету, черный для строки, синий для числа.

=== - сложный способ сравнения в JS.

Вы можете увидеть на https://stackoverflow.com/a/359509/8572205

Итак === возврат false и ни один элемент не добавлен в existCount

0 голосов
/ 20 ноября 2018

если вы используете тройное равенство ===, убедитесь, что оба сравниваемых значения имеют одинаковый тип. Я подозреваю, что script.script_id это строка.

Попробуйте изменить === на ==

...