У меня есть массив, содержащий все идентификаторы и массив, содержащий все допустимые идентификаторы.
Я просто хочу получить недопустимые идентификаторы.Сравните массив с массивом объектов
Это может быть сделано для циклов, но если возможно, я хотел бы сделать это с использованием метода .filter(), чтобы он был коротким и, возможно, более прозрачным.
Проблема состоит в том, что массив, содержащий допустимые идентификаторы, выглядит много иначе, чем массив, содержащий все идентификаторы. Позвольте мне показать вам:
var allIds = ["1673","2456","8977","5467"];
var validIds = [ {_id: "2456"}, {_id: "5467"} ];
var invalidIds = []; //as non-associative array
invalidIds = allIds.filter(function(x) { return validIds[x]["_id"].indexOf(x) < 0 });
console.log(invalidIds); //Uncaught TypeError: Cannot read property '_id' of undefined
Есть ли способ исправить это?
'x' уже объект с' _id'. И почему 'indexOf'? Вы сравниваете два числа в этой точке, вы можете использовать равенство значений '==='. – elclanrs
О, я забыл упомянуть, что мои идентификаторы на самом деле являются строками. ... Я отредактировал это очень быстро. – Forivin