不可变 - 用切片更改数组中的元素(无拼接)

Ing*_*ler 7 javascript slice immutable.js

如何改变3/4元素?预期产量为[1,2,4,3,5]

let list = [1,2,3,4,5];
const removeElement = list.indexOf(3); // remove number 3
list.slice(0, removeElement).concat(list.slice(removeElement+1)) // [1,2,4,5]
Run Code Online (Sandbox Code Playgroud)

...接下来在4号之后推3号而没有拼接

Mar*_*ams 16

slice不会改变它运行的数组,因此你需要为它返回的值赋值

let list = [1,2,3,4,5];
const removeElement = list.indexOf(3); // remove number 3
var newList = list.slice(0, removeElement).concat(list.slice(removeElement+1)) // [1,2,4,5]
Run Code Online (Sandbox Code Playgroud)

如果您准备使用ES2015语法,则可以使用spread运算符,如下所示:

const removeElement = list.indexOf(3); // remove number 3
var es6List = [
  ...list.slice(0, removeElement),
  ...list.slice(removeElement+1)
];
console.log(es6List);
Run Code Online (Sandbox Code Playgroud)

小提琴


ide*_*ide 7

写这个的最简单方法是使用spread运算符:

let newList = [...list.slice(0, 2), list[4], list[3], ...list.slice(4)];
Run Code Online (Sandbox Code Playgroud)