通过索引删除几个数组元素并存储删除的元素

时间:2020-02-28 10:43:37

标签: javascript typescript

如何按索引删除多个项目并保存删除的项目。我从列表框(例如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"] 

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

2 个答案:

答案 0 :(得分:3)

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

push

答案 1 :(得分:0)

您可以执行一个循环,然后将拼接的元素粘贴到另一个数组中。

 Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
 Console.Write(unixTimestamp);
 var currentTimeUn = unixTimestamp.ToString();
string json = "{ \"Method\": \"GetShippedOrders\",\"Params\": { \"DateMin\": 1575158400, \"DateMax\": {currentTimeUn} }}";