JSON.parse返回一个数组,但不能用作数组

Mou*_*ser -1 javascript json

考虑以下情况:

const JSONString = `["a", "b"]`;
console.log(JSON.parse(JSONString).push("c")); //returns 3 (length)
Run Code Online (Sandbox Code Playgroud)

为什么JSON.parse返回数组并Array在其上允许方法,但是当你实际尝试push数组中的某些东西时,它会返回长度?

如果我们执行以下操作,它将起作用:

const JSONString = `["a", "b"]`;
console.log(JSON.parse(JSONString).concat("c"));
Run Code Online (Sandbox Code Playgroud)


以上是原始问题,Quentin在下面正确回答.表现问题:

在上面的情况下会更好:concat或者push,concat只有一行但返回一个新数组.push需要更多代码行,但保留原始数组?

Que*_*tin 8

为什么JSON.parse返回数组

因为它是一个数组

允许使用Array方法

因为它是一个数组

当你真的尝试在数组中推送一些东西时,它会返回长度吗?

因为push函数的返回值是数组的长度

引用MDN:

push()方法将一个或多个元素添加到数组的末尾,并返回数组的新长度.

JSON.parse与此无关:

const array = ["a", "b"];
const return_value = array.push("c");
console.log({ array, return_value });
Run Code Online (Sandbox Code Playgroud)


在上面的情况下会更好:concat或push,其中concat只有一行但返回一个新数组.push需要更多代码行,但保留原始数组?

如果您需要原始阵列,那么答案是显而易见的.

如果你不这样做,那么这是一个意见问题.