cha*_*ite 6 javascript concatenation
在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
Run Code Online (Sandbox Code Playgroud)
这会在FireBug中获得输出,如预期的那样:
Filtered array
[Object { id=15}, Object { id=-1}, Object { id=0}, Object { id=3}, Object { id=12.2}]
Number of Invalid Entries: 4
Run Code Online (Sandbox Code Playgroud)
但我最初,错误但有意地键入了第一个console.log(); 声明如下:
console.log('Filtered array\n' + arrById);
Run Code Online (Sandbox Code Playgroud)
并获得此FireBug输出:
Filtered array
[object Object],[object Object],[object Object],[object Object],[object Object]
Number of Invalid Entries: 4
Run Code Online (Sandbox Code Playgroud)
为什么不同的输出?
连接obj 上的+调用toString方法,因此返回字符串“object”,而不是像使用,console.log() 输出的 to concat 返回的那样返回 obj 属性(名称:值)。