从数组中删除与特定字符串匹配的所有元素的最简单方法是什么?例如:
array = [1,2,'deleted',4,5,'deleted',6,7];
我想'deleted'从数组中删除所有.
Wal*_*anG 51
只需使用Array.prototype.filter()函数来获取条件的元素
var array = [1,2,'deleted',4,5,'deleted',6,7];
var newarr = array.filter(function(a){return a !== 'deleted'})
Run Code Online (Sandbox Code Playgroud)
let array = [1,2,'deleted',4,5,'deleted',6,7]
let newarr = array.filter(a => a !== 'deleted')
Run Code Online (Sandbox Code Playgroud)
如果要从主数组中删除多个字符串,可以尝试这样做
// Your main array
var arr = [ '8','abc','b','c'];
// This array contains strings that needs to be removed from main array
var removeStr = [ 'abc' , '8'];
arr = arr.filter(function(val){
return (removeStr.indexOf(val) == -1 ? true : false)
})
console.log(arr);
// 'arr' Outputs to :
[ 'b', 'c' ]
Run Code Online (Sandbox Code Playgroud)
要么
更好的性能(使用哈希),如果不需要严格的类型相等
// Your main array
var arr = [ '8','deleted','b','c'];
// This array contains strings that needs to be removed from main array
var removeStr = [ 'deleted' , '8'];
var removeObj = {}; // Use of hash will boost performance for larger arrays
removeStr.forEach( e => removeObj[e] = true);
var res = arr.filter(function(val){
return !removeObj[val]
})
console.log(res);
// 'arr' Outputs to :
[ 'b', 'c' ]
Run Code Online (Sandbox Code Playgroud)
array = array.filter(function(s) {
return s !== 'deleted';
});
Run Code Online (Sandbox Code Playgroud)
如果你想要相同的数组,那么你可以使用
var array = [1,2,'deleted',4,5,'deleted',6,7];
var index = "deleted";
for(var i = array.length - 1; i >= 0; i--) {
if(array[i] === index) {
array.splice(i, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
否则,您可以使用Array.prototype.filter它创建一个新数组,其中包含通过提供的函数实现的测试的所有元素。
var arrayVal = [1,2,'deleted',4,5,'deleted',6,7];
function filterVal(value) {
return value !== 'deleted';
}
var filtered = arrayVal.filter(filterVal);
Run Code Online (Sandbox Code Playgroud)