如何在Javascript中删除数组中多个元素的所有出现
How to remove all occurrences of a multiple occurring element in an array in Javascript?
例如,从数组
中删除值2[1, 2, 3, 2, 4]
应该产生结果
[1, 3, 4]
如果我使用过滤器,它只会删除第二次及之后的出现,这不是我想要的。
所有出现多次的值都应该完全删除。
您可以对filter()
执行此操作,并仅返回具有相同indexOf()
和lastIndexOf()
的元素
var data = [1, 2, 3, 2, 4, 1, 1];
var result = data.filter(function(e) {
return data.indexOf(e) == data.lastIndexOf(e);
});
console.log(result)
最简单的解决方案可能只是保留多次出现的所有发现项的映射,并始终在过滤器
中删除它们。var arr = [1, 2, 3, 2, 4];
var map = [];
var filtered = arr.filter(function(item, index) {
if (arr.lastIndexOf(item) !== index) map.push(item);
return map.indexOf(item) === -1;
});
console.log(filtered)
如果你之前对数组进行了排序,那么你只需要删除与相邻元素相同的元素:
var input = [1, 2, 3, 2, 4, 5, 6, 5 , 5, 1];
var result = input.sort().filter((x,i,arr) => x !== arr[i+1] && x !== arr[i-1]));
console.log(result); // [3, 4, 6 ]
不排序的提案
var data = [1, 2, 3, 2, 4],
filtered = data.filter(function (a) {
return this[a] === 1;
}, data.reduce(function (r, a) {
r[a] = (r[a] || 0) + 1;
return r;
}, {}));
console.log(filtered);
相关文章:
- 如何访问数组中的数组元素(JavaScript)
- 如何找到从中调用函数的元素(Javascript)
- 另一个元素JAVAscript中的元素位置
- 隐藏元素:Javascript属性和CSS样式之间的区别
- 如何比较数组中的元素(javascript)
- 使用一个函数来不同的元素 JavaScript
- 我需要从数组中获取一些元素 - JavaScript
- 元素 JavaScript 的读取宽度
- 识别数组的最后一个元素 - javascript
- 你如何使 Math.random 数组中的每一个第 9 个元素都是同一个元素?[JavaScript]
- 即时创建 Asp.Net 元素 Javascript
- 在提交表单上动态更改输入元素 javascript
- Kendo UI Grid 获取当前元素 javascript 的 ID
- 在我的 chrome 网上商店应用程序中禁用检查元素/JavaScript 控制台
- Canvas 元素 + Javascript 在 Chrome 和 Firefox 中工作,而不是在 Internet
- 对于在循环中不打印所有元素 - Javascript
- 选择元素 |Javascript vs Jquery.
- 无法删除 DOM 元素(JavaScript,CreateJS)
- 单击元素>JavaScript输出文档.activeElement VS.事件目标
- 当用户在文本框中输入数字时,将动态获得数组元素javascript或PHP