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

时间:2019-03-01 16:23:56

标签: javascript json

请考虑以下情况:

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

  

为什么JSON.parse返回数组并允许使用Array方法,但是当您实际尝试push数组中的某些内容时,它返回长度吗?

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

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


上面是原始问题,下面是昆汀正确回答的问题。 性能问题:

在上述情况下更可取:concatpush,其中concat仅一行,但返回一个新数组。 push需要更多代码行,但保留原始数组?

1 个答案:

答案 0 :(得分:8)

  

为什么JSON.parse返回数组

因为它是一个数组

  

允许使用数组方法

因为它是一个数组

  

当您实际尝试将某些内容推入数组时,它会返回长度吗?

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

引用MDN

  

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

JSON.parse与此无关:

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


  

在上述情况下将是可取的:concat或push,其中concat只是一行,但返回一个新数组。 push需要更多代码行,但保留原始数组?

如果您需要原始数组,那么答案很明显。

如果您不这样做,那就是舆论问题。