我不明白下面的这段代码是如何在这里打印数字2的。
const arr = [{
greet: 'hi',
}];
const arr2 = arr.map(obj => obj.greet).push('bye');
console.log(arr2); // 2
首先,由于arr.map(obj=>obj.greet)将返回[“hi”],通过向该数组推入'bye',它应该是['hi','bye']。
const arr = [{
greet: 'hi',
}];
const arr2 = arr.map(obj => obj.greet);
arr2.push('bye');
console.log(arr2); // ['hi', 'bye']
与此不同的是,如果我把它们放在一起,它返回的是2而不是['hi','bye'],这在我看来真的很奇怪。 谁能给我解释一下吗?
由于push
的返回值是数组中的元素数,因此第一个示例将显示2
,而第二个示例将实际显示数组内容。
https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/array/push
数组推送将返回数组的长度,这是您分配给arr2
的长度。 参考
push
返回追加元素后数组的长度。
可以使用扩展运算符追加到新数组:
const arr2 = [...arr.map(obj => obj.greet), 'bye']
或连接:
const arr2 = arr.map(obj => obj.greet).concat('bye')