向 JavaScript 数组中添加一个空元素。

9

如何将空元素推入现有的Js数组中?假设:

var arr = [54,77,21];
var target = [54,77,21,,,,36];
arr.push(); //do not append an empty element into the array.
arr.push();

console.log(JSON.stringify(arr)); //output: [54,77,21]

如何添加空元素,使得数组 "arr" 与目标数组 "target" 等效?

不,我尝试过了,它会追加一个字符串元素 [54,77,21,""]。 - Voice Of The Rain
1
可能是如何在JSON中表示带有空元素的数组?的重复问题。 - Mohammad Usman
你想做什么?为什么需要这些空元素?也许你需要一个对象来实现:{0:54, 1: 77, 2: 21, 6: 36} - Justinas
@Justinas,我有一个Chart.js图表,它需要像这样的数组,否则它将无法渲染点。 - Voice Of The Rain
3个回答

9
您可以直接访问索引。这会建立一个稀疏数组。

var arr = [54,77,21];

arr[6] = 36;
console.log(JSON.stringify(arr));

或者一直按下undefined,直到你想要推送这个值。这将返回一个填充好的数组。

var arr = [54,77,21];

arr.push(undefined);
arr.push(undefined);
arr.push(undefined);
arr.push(36);
console.log(JSON.stringify(arr));

通过使用JSON.stringify,你会得到对于未定义或稀疏的项null,因为JSON只知道null而不是undefined

是的,我提到了这一点。使用 stringify,稀疏元素会得到 undefined。稍后解析时没有区别。 - Nina Scholz
JSON.stringify 很令人困惑,因为它会将空元素转换为 null。 - Voice Of The Rain

5
您可以使用 Array#length
arr.length++;

您可以通过设置数组的长度属性来截断数组。当您通过更改其长度属性来扩展数组时,实际元素的数量会增加;例如,如果在当前长度为2时将长度设置为3,则数组现在包含3个元素,这会导致第三个元素成为不可迭代的空槽位。
但请注意,JSON不支持稀疏数组。即您无法使用`JSON.stringify`查看空槽位。

var arr = [54,77,21];
arr.length++;
arr.length++;
arr.length++;
arr.push(36);
console.log(arr);

(FYI:Stack Snippets似乎无法正确支持稀疏数组。您需要在浏览器控制台中运行该代码。)

1
你可以使用 array.prototype.concat() 方法。

    var arr1 = [1, 2, 3, 4];

    var arrtarget = [1, 2, 3, 4, , , , 5, 6];

    console.log(arr1);
    console.log(arrtarget);

    newArr = arr1.concat([, , , 5,6]);

    console.log(newArr);

另外,您也可以使用 Array.Prototype.push() 方法

arr1.push(undefined);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接