使用javascript过滤器从数组中删除元素
Remove elements from array using javascript filter
我有两个数组,希望使用filter函数删除重复的数组。
这是我的代码:
arr1 = [1, 2, 3, 1, 2, 3];
arr2 = [2, 3];
result = [1, 1];
var result = arr1.filter(function(value, index) {
for (var i = 0; i <= arr2.length; i++) {
if (value !== arr2[i]) {
return value === arr2[i];
}
}
}
提前感谢!任何帮助都会很棒!
您可以尝试将参数转换为数组,然后检查初始数组中的值是否在参数数组中:
function destroyer(arr) {
// Converting arguments into array
var args = Array.prototype.slice.call(arguments);
arr = arr.filter(function (val) {
return args.includes(val)===false;
});
return arr;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3); // returns[1,1]
首先,如果添加库不是问题的话。我正在使用undercore.js.中的uniq
uniq_.uniq(array,[isSorted],[iteratee])别名:唯一
生成数组的重复免费版本,使用===测试对象平等特别地,只有每个值的第一次出现是保留。如果事先知道数组已排序,则传递truefor isSorted将运行更快的算法。如果你想计算基于转换的唯一项,传递一个iteratee函数。
_.uniq([1,2,1,4,1,3]);=>[1,2,4,3]
另一种解决方案是使用纯JS:
var newArray = [1, 2, 2, 3, 3, 4, 5, 6];
var unique = newArray.filter(function(itm, i, a) {
return i == newArray.indexOf(itm);
});
alert(unique);
但首先你需要将你的阵列组合成一个新的阵列:
var newArray = arr1.concat(arr2);
JS Fiddle
我希望这能有所帮助!:)
这里有一种没有过滤功能的方法:
var arr1 = [1, 2, 3, 1, 2, 3];
var newArr = [];
for(var i = 0;i < arr1.length;i++){
if (newArr.indexOf(arr1[i]) === -1) {
newArr.push(arr1[i]);
}
}
只需使用Array.prototype.filter()
filter()
方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
带Array.prototype.indexOf()
indexOf()
方法返回可以在数组中找到给定元素的第一个索引,如果不存在,则返回-1。
var arr1 = [1, 2, 3, 1, 2, 3],
arr2 = [2, 3],
result = arr1.filter(function (a) {
return !~arr2.indexOf(a);
});
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
如本JS Fiddle中所示,使用filter()
arr1 = [1, 2, 3, 1, 2, 3];
arr2 = [2, 3];
result = [1, 1];
var result = arr1.filter(myFunc);
function myFunc(value) {
for (var i = 0; i < arr2.length; ++i) {
// to remove every occurrence of the matched value
for (var j = arr1.length; j--;) {
if (arr1[j] === arr2[i]) {
// remove the element
arr1.splice(j, 1);
}
}
}
}
document.getElementById('result').innerHTML = arr1;
console.log(arr1);
// Output: [1,1]
<div id="result"></div>
相关文章:
- 从组件状态的数组中删除元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 正则表达式条件来删除元素
- 使用javascript删除元素时出现的问题
- 当会话存储阵列中存在大量元素时,如何从中删除元素
- 从角度数组中删除元素
- AngularJs localStorage在循环中删除元素
- 在使用jquery插入之前删除元素
- 如何删除元素列表中的类并添加到另一个元素 Jquery.
- 更新分组条形图(转换或删除元素组)
- 向下滚动后如何用同一类逐个删除元素
- 如何防止 jQuery 事件在删除元素时冒泡
- 从jQuery对象中删除元素
- 如何删除元素的结束标记,添加一些文本,然后重新添加标记
- 从画布中删除元素
- 如何解析html以删除元素并只返回其位置的标题
- 使用 V8 从密集数组中删除元素的最佳方法是什么
- 如何使用jquery删除元素
- 根据成员属性从数组中删除元素
- 从中删除元素'的父元素,并将其附加到其他元素