4

如何覆盖(或取消设置然后设置)数组?好像"array = new_array"不行

4

6 回答 6

14

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

array = new Array();

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

array = [];

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

array.splice(0, array.length);
于 2009-10-12T16:51:59.920 回答
3

这应该有效。

array1 = array2;

如果不是,请提供更多详细信息。

于 2009-10-12T16:52:49.310 回答
3

清除数组

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

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

myArray = [];
myArray.length = 0;
于 2017-08-09T06:47:19.700 回答
0

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

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

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

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

arr = [];
于 2009-10-12T16:52:03.447 回答
0

使用切片()

像这样->array = new_array.slice(0);

于 2019-11-12T10:12:08.480 回答
-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 的拼接技术对我有用。

于 2009-10-12T19:21:12.647 回答