я следующий код, основанный на docsJavascript фильтр в массиве
var arr = [
{ id: 15 },
{ x: [{ id: 777 }, { id: 'xx' }, { notidproperty: 987 }]},
{ id: 1111 }
];
function filterByID(obj) {
if ('id' in obj && typeof(obj.id) === 'number' && !isNaN(obj.id)) {
return true;
} else if (Object.prototype.toString.call(obj) === '[object Array]') { //obj type is Object, not Array
obj.filter(filterByID);
} else {
return false;
}
}
var arrByID = arr.filter(filterByID);
console.log('expected length = 3, actual length = ' + arrByID.length);
console.log(arrByID);
Как я могу фильтровать «обр» массив? Есть ли другие методы для получения правильного результата?
EDIT: ожидаемый результат фильтруется массив объектов, которые имеют свойство Id с числовым значением
Таким образом, ожидаемые значения Id являются 15, 777, 1111
пожалуйста, добавьте желаемый результат. –
Отсутствует описание того, что вы даже хотите, чтобы этот код выполнял ... см. [Ask]. Обратите внимание также, что ничего не возвращается в состоянии 'else if' – charlietfl
Возможно, вы можете заменить' Object.prototype.toString.call (obj) === '[object Array]') 'с' Array.isArray() ' – Andy