如何覆盖数组?

问题描述 投票:0回答:7

如何覆盖(或取消设置然后设置)数组?好像

"array = new_array"
不起作用。

javascript arrays overwrite unset
7个回答
14
投票

要创建一个空数组来分配给变量,可以使用数组构造函数:

array = new Array();

或者您可以使用空数组文字:

array = [];

如果您对一个数组有多个引用,因此您必须清空实际的数组对象而不是替换对它的引用,您可以这样做:

array.splice(0, array.length);

4
投票

清除数组

http://2ality.com/2012/12/clear-array.html

let myArray = [ 1, 2, 3, 4];

myArray = [];
myArray.length = 0;

3
投票

这应该有效。

array1 = array2;

如果没有,请提供更多详细信息。


0
投票

我不太确定你要做什么,但有几种方法可以重置数组。

您可以迭代现有数组并将每个索引设置为 null(或空字符串或 0 或您认为重置的任何值):

for(var i = 0; i < arr.length; i++) {
   arr[i] = null;
}

您也可以只更新对对象的新实例的现有引用:

arr = [];

0
投票

使用 Slice()

像这样 ->

array = new_array.slice(0);


0
投票

我不明白这个问题,但是如果你想覆盖数组中的元素,我会这样做。

var myArray = ["item 0", "item 1", "item 2", "item 3", "item 4"]
  console.log("myArray", myArray)
  overrideItem.onclick = () => {
    if (myArray.indexOf("item 0") > -1) {
      myArray[myArray.indexOf("item 0")] = "new item"
      console.log("item 0 was overwritten by new item", myArray)
    } else {
      myArray[myArray.indexOf("new item")] = "item 0"
      console.log("new item was overwritten by item 0", myArray)
    }
  }
<button id="overrideItem">Override Item</button>


-2
投票

嗯,看来问题不是我想的那样;我的错误是以下几行,毕竟它们与数组没有任何关系:

sms.original = eval('(' + data + ')');
sms.messages = sms.original;

sms.original 成为一个对象,然后 sms.messages 成为 sms.original (我只是希望它们具有相同的值)。这些对象包含一个名为 items 的数组,该数组在 sms.original 对象中保持静态,但是当我更改 sms.messages 时,原始对象也发生了变化。解决方案很简单:

sms.original = eval('(' + data + ')');
sms.messages = eval('(' + data + ')');

抱歉打扰您,我应该详细说明,但代码分为多个文件和函数。不管怎样,谢谢你们,现在 Guffa 的拼接技术对我有用吗?

© www.soinside.com 2019 - 2024. All rights reserved.