JavaScript数组映射后推送-返回数组长度?
我不明白下面的代码是如何在这里打印数字2的JavaScript数组映射后推送-返回数组长度?,javascript,Javascript,我不明白下面的代码是如何在这里打印数字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', }]; co
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
,而第二个示例将实际显示数组内容
数组推送将返回数组的长度,这是您分配给
arr2
的长度 返回追加元素后数组的长度
您可以使用运算符附加到新数组:
const arr2 = [...arr.map(obj => obj.greet), 'bye']
或:
这是因为console.log()是.push,而不是数组的内容。 .push()是一个方法,如果将其存储在const或let中,它们将采用.push()方法的值(即长度),而不是数组的值 您可以检查MDN中的示例:
const arr2 = arr.map(obj => obj.greet).concat('bye')