gpt4 book ai didi

javascript - 按索引删除多个数组元素并存储删除的元素

转载 作者:行者123 更新时间:2023-11-28 16:46:57 24 4
gpt4 key购买 nike

如何通过索引删除多个项目并保存删除的项目。我从 ListBox 中获取当前选定的值(例如 selectedValues = [1, 4, 2]),并有两个数组 actives availables。我尝试以有效的方式移动选定的元素。

这就是我解决这个问题的方法:

var actives = [ "a", "d", "k", "e"]
var availables = [ "m", "o", "v" ]
var selectedValues = [3, 1]
var elementsToMove = []

selectedValues.forEach(i => {
elementsToMove.push(actives[i])
})

actives = actives.filter(item => !elementsToMove.includes(item))
availables = availables.concat(elementsToMove);

console.log(actives);
console.log(availables);

预期输出:

actives = [ "a", "k" ]
availables = [ "m", "o", "v", "e", "d"]

注意:数组的长度可以非常大。

最佳答案

内部包含 .includes.filter 的复杂度是 O(n ^ 2)。对于非常大的输入,这可能是一个问题。考虑将 elementsToMove 转换为 Set,将整体计算复杂度变为 O(n)。您还可以通过使用 .map 而不是 forEach 后跟 push 来更简洁地构造 elementsToMove 数组:

var actives = [ "a", "d", "k", "e"]
var availables = [ "m", "o", "v" ]
var selectedValues = [3, 1];
const elementsToMove = selectedValues.map(i => actives[i]);
const elementsToMoveSet = new Set(elementsToMove);

actives = actives.filter(item => !elementsToMoveSet.has(item))
availables = availables.concat(elementsToMove);

console.log(actives);
console.log(availables);

关于javascript - 按索引删除多个数组元素并存储删除的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60450072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com