从JS中不可变数组中删除元素的最简洁方法是什么? [重复]

问题描述 投票:3回答:1

这个问题在这里已有答案:

我需要从一个React组件状态的数组中删除一个元素。这意味着它是一个不可变的对象。

使用扩展语法很容易添加元素。

    return {
        ...state,
        locations: [...state.locations, {}]
    };

删除有点棘手。我需要使用一个中间对象。

        var l = [...state.locations]
        l.splice(index, 1)
        return {
            ...state,
            locations: l
        }

它使代码更加污垢和难以理解。

创建一个从中删除元素的新数组是否更容易或更简单?

javascript arrays reactjs immutability spread-syntax
1个回答
9
投票

你可以使用spread和Array#slice的组合:

const arr = ['a', 'b', 'c', 'd', 'e'];

const indexToRemove = 2; // the 'c'

const result = [...arr.slice(0, indexToRemove), ...arr.slice(indexToRemove + 1)];

console.log(result);

另一个选项是Array#filter:

const arr = ['a', 'b', 'c', 'd', 'e'];

const indexToRemove = 2; // the 'c'

const result = arr.filter((_, i) => i !== indexToRemove);

console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.