作者:专业破解王_920 | 来源:互联网 | 2023-02-09 21:13
在MDN网站上处理此示例时,解释了过滤方法:
var arr = [
{ id: 15 },
{ id: -1 },
{ id: 0 },
{ id: 3 },
{ id: 12.2 },
{ },
{ id: null },
{ id: NaN },
{ id: 'undefined' }
];
var invalidEntries = 0;
function isNumber(obj) {
return obj!== undefined && typeof(obj) === 'number' && !isNaN(obj);
}
function filterByID(item) {
if (isNumber(item.id)) {
return true;
}
invalidEntries++;
return false;
}
var arrByID = arr.filter(filterByID);
console.log('Filtered Array\n', arrByID);
// Filtered Array
// [{ id: 15 }, { id: -1 }, { id: 0 }, { id: 3 }, { id: 12.2 }]
console.log('Number of Invalid Entries = ', invalidEntries);
// Number of Invalid Entries = 4
这会在FireBug中获得输出,如预期的那样:
Filtered array
[Object { id=15}, Object { id=-1}, Object { id=0}, Object { id=3}, Object { id=12.2}]
Number of Invalid Entries: 4
但我最初,错误但有意地键入了第一个console.log(); 声明如下:
console.log('Filtered array\n' + arrById);
并获得此FireBug输出:
Filtered array
[object Object],[object Object],[object Object],[object Object],[object Object]
Number of Invalid Entries: 4
为什么不同的输出?