javascript - 在某些索引处剥离/删除数组中的值

标签 javascript arrays loops

我有一个这样的数组:

peoples = ['dick', 'jane', 'harry', 'debra', 'hank', 'frank' .... ]

还有一个包含这样的键:

keys  = [1, 6, 3, 12 .... ]

现在我可以这样写:

var peoplesStripedOfKeyPostions = [];

for(i = 0; i < peoples.length; i++){
    for(j = 0; j < keys.length; j++){
        if( i !== keys[j]){
            peoplesStripedOfKeyPostions.push( peoples[i] );
        }
    }        
}

如果您看不出来,我需要生成一个人员数组,在数组键中定义的某些位置去除人员。我知道必须有一种巧妙而有效的方法来做到这一点,但我当然想不出。 (阵列管理不是我的强项)。

你知道更好的方法吗? (如果我得到多个有效答案,jsperf 将决定获胜者。)

最佳答案

people.filter(function(x,i){return badIndices.indexOf(i)==-1})

如果 badIndices 数组很大,这将变得低效。一个更高效(尽管不那么优雅)的版本是:

var isBadIndex = {};
badIndices.forEach(function(k){isBadIndex[k]=true});

people.filter(function(x,i){return !isBadIndex[i]})

(注意:您不能使用名为 keys 的变量,因为它是内置函数)

关于javascript - 在某些索引处剥离/删除数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12311467/

相关文章:

javascript - Javascript 和服务器端代码之间的重复常量

java - 获取数组中对象的索引

javascript - 使用 v-model 改变 prop 的属性是不好的做法吗?

javascript - 服务构造函数如何在 Angular 2 中实例化?

c - 在 c 中使用数组分配 LIFO 内存的目的是什么?

python - 如果在某些时间/值之间, Pandas 累积总和

python - 收集通过随机采样其他数据帧构建的数据帧的汇总统计信息

c++ - 在循环期间更改订阅的发布者/订阅者

javascript - 使用 es6 导入并调用函数

python - 如何计算 numpy 数组沿轴的平均值?