例如,我有两个这样的数组。
const data = ["John", "Andy", "Ruby"]
const eliminator = ["John"]
所以我希望得到这样的结果:
data = ["Andy", "Ruby"]
我对javascript很陌生。如果答案是纯JavaScript,将不胜感激,但非常欢迎高级答案。谢谢
答案 0 :(得分:1)
使用Array.filter()
过滤data
数组中不存在的eliminator
数组的值。
const data = ["John", "Andy", "Ruby"]
const eliminator = ["John"]
var res = data.filter(name => eliminator.indexOf(name) === -1);
console.log(res);
如果希望它在所有浏览器中都可以使用,则可以使用简单的函数声明。另外请注意,您需要使用indexOf()
而不是includes()
方法,因为includes()
在IE浏览器中不起作用。
const data = ["John", "Andy", "Ruby"]
const eliminator = ["John"]
var res = data.filter(function(name){
return eliminator.indexOf(name) === -1;
});
console.log(res);
如需进一步阅读,请参见:Array.filter()
答案 1 :(得分:0)
如果在整个项目中都使用此功能,则可以在数组类中添加diff原型。
Array.prototype.diff = function(eli) {
return this.filter(function(i) {return eli.indexOf(i) < 0;});
};
之后,您可以在任何地方使用此方法...
data.diff(eliminator)
为您提供所需的结果。
答案 2 :(得分:0)
使用filter()和includes()(返回 true 或 false )使代码更短。
const data = ["John", "Andy", "Ruby"]
const eliminator = ["John"]
var newData = data.filter(o=>!eliminator.includes(o))
console.log(newData)
答案 3 :(得分:0)
您可以使用Underscore.js _.difference()
const data = ["John", "Andy", "Ruby"];
const eliminator = ["John"];
var NewData = _.difference(data , eliminator);
// Result : NewData = ["Andy", "Ruby"]