相关疑难解决方法(0)

在JavaScript中复制数组的最快方法 - 切片与'for'循环

为了在JavaScript中复制数组:以下哪个更快使用?

切片方法

var dup_array = original_array.slice();
Run Code Online (Sandbox Code Playgroud)

For

for(var i = 0, len = original_array.length; i < len; ++i)
   dup_array[i] = original_array[i];
Run Code Online (Sandbox Code Playgroud)

我知道两种方式只做一个浅的副本:如果original_array包含对象的引用,则不会克隆对象,但只会复制引用,因此两个数组都将引用相同的对象.但这不是这个问题的重点.

我只询问速度.

javascript arrays copy duplicates slice

594
推荐指数
17
解决办法
55万
查看次数

在一行代码中用扩展语法替换数组条目?

我正在使用... spread语法替换react状态数组中的项.这有效:

let newImages = [...this.state.images]
newImages[4] = updatedImage
this.setState({images:newImages})
Run Code Online (Sandbox Code Playgroud)

是否可以在一行代码中执行此操作?像这样的东西?(这显然不起作用......)

this.setState({images: [...this.state.images, [4]:updatedImage})
Run Code Online (Sandbox Code Playgroud)

javascript reactjs spread-syntax

10
推荐指数
4
解决办法
1万
查看次数

使用扩展语法时如何根据索引更新数组元素?

将数组视为

const foo = [1, 2, 3];

现在,如果我想替换第二个元素,我可以这样做:

foo[1] = 4;或者

foo.splice(1,1,4);或者

const foo = [1, 2, 3];

console.log([...foo.slice(0, 1), 4, ...foo.slice(2)]);
// I know this creates a new array unlike the above two ways.
Run Code Online (Sandbox Code Playgroud)

但是当我们使用扩展运算符来浅复制对象时,我们可以动态地覆盖一个属性,例如:

const someObject = {
 a: 1,
 b: 2,
 c: 3
}
const propertyToChange = 'b';

const newObject = { ...someObject, [propertyToChange]: 4 };
Run Code Online (Sandbox Code Playgroud)

那么,数组有等价的吗?也许类似于下面的内容来根据索引更改元素。

const newArray = [...oldArray, [dynamicIndex]: 4 ];
Run Code Online (Sandbox Code Playgroud)

javascript arrays ecmascript-next

3
推荐指数
1
解决办法
3569
查看次数