Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript数组映射后推送-返回数组长度?_Javascript - Fatal编程技术网

JavaScript数组映射后推送-返回数组长度?

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

我不明白下面的代码是如何在这里打印数字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
,而第二个示例将实际显示数组内容


数组推送将返回数组的长度,这是您分配给
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')