javascript:数组push不生效问题

arr是一个数组
let obj ={} //res是对象
arr.push(obj) //不生效
let res = arr.push(obj) //生效
有些迷茫,不知道为什么

  • Array.push() 方法会向数组末尾添加一个或多个元素,并返回更新后的数组长度。在这个例子中,arr.push(obj) 只是执行了 push() 方法,并没有将返回的数组长度保存到任何变量中,因此无法获得更新后的数组。
  • 而在 let res = arr.push(obj) 中,将返回值赋给了变量 res,这样 res 就变成了数组的长度,即 push 后的新数组长度。同时,原数组 arr 也被修改了。
  • 如果您想查看 arr 数组是否已被修改,可以尝试在调用 push() 方法之前和之后输出 arr 数组的值,以便您可以更好地理解该方法如何影响数组。

该回答引用ChatGPT
Array.push() 方法会将新的元素添加到数组末尾,并返回新的数组长度。

在第一个例子中,您只是向数组 arr 添加一个新元素,但您没有在 push() 方法调用后将其赋值给任何变量。因此,该语句执行成功,但没有任何输出。您可以使用 console.log() 函数在控制台上打印 arr 数组来检查它是否已更新。

在第二个例子中,您将新元素添加到数组 arr 中,同时使用 push() 方法返回的新数组长度赋值给变量 res。这将输出数组的新长度,而不是数组本身。

因此,两个例子的结果是不同的。如果您只想向数组中添加元素,您可以使用第一个例子中的代码,如果您想获取数组的新长度,则可以使用第二个例子中的代码。

arr.push(obj) 方法会将 obj 添加到 arr 数组中,并返回修改后的数组的新长度。但是,这个返回值不是将 obj 添加到 arr 的结果,而是修改后的数组的长度。因此,arr.push(obj) 语句不会为 res 赋值,只会将 obj 添加到 arr 数组中。

如果想要在将 obj 添加到 arr 数组中的同时,为 res 赋值,可以使用以下方式:

let res = arr.push(obj);


这样,arr.push(obj) 会将 obj 添加到 arr 数组中,并返回修改后的数组的新长度,这个值将被赋给 res 变量。

Array.push() 方法返回的是添加元素后的数组长度,而不是修改后的数组。所以在你的例子中,第一次使用 arr.push(obj) 只是将 obj 添加到了 arr 中,但是 arr 的值本身没有改变,因此 res 的值为 arr 的长度,而不是修改后的数组。

如果你想在原来的 arr 数组中添加元素并修改该数组,可以使用以下代码:


let obj = {};
arr.push(obj);
let res = arr; // 此时的 res 和 arr 指向同一个数组

这样,res 将会指向 arr,而 arr 的值已经被修改了,包含了新的元素 obj。

你打印arr就行了 。

let obj = {} //res是对象
   let arr=[];
   // arr.push(obj) //不生效
   let res = arr.push(obj) //生效
  console.log(arr,res)

push之后返回的是新的数组的长度,而不是新的数组。
以你上面代码为例,执行到最后 arr数组,长度应为2,里面包含两个空对象。 res也为2,因为你push了两次。