过滤对象数组中的相似名称 JavaScript
Filter similar names in object array JavaScript
所以这是一个我一直在努力解决的问题。我想过滤一个对象列表,但代码似乎只适用于数组。我可以用对象达到相同的结果吗?基本上我想要的是:if card.name = jose.然后删除 jose._R
如果 card.name = jose._R 然后删除何塞。
代码:
var data = {'cards' :
[
{'name': "jose."},
{'name': "jose._R"},
{'name': "rodrigo."},
{'name': "rodrigo._R"},
{'name': "jojo."},
{'name': "jojo._R"},
]
};
let dataName = data.cards[0].name;
let rev = data.cards[0].name + "_R";
var data2 = ["jose.", "jose._R", "rodrigo.", "rodrigo._R", "jojo.", "jojo._R",];
let dataName2 = data2[0];
let rev2 = data2[0] + "_R";
if(dataName2.endsWith('.')){
data2 = data2.filter(function(f) {return f !== rev2});
};
if(dataName.endsWith('.')){
data = data.cards.filter(function(f) {return f !== rev}); // NOT WORKING! It doesn't remove the object array... :-(
};
console.log(data);
console.log(data2);
在你的过滤函数中
function(f) {
return f !== rev;
}
您正在将 整个对象 { 'name': 'rodrigo.' }
与字符串进行比较,因此它们永远不会相等。相反,您应该将名称 属性 与给定的字符串进行比较:
function(f) {
return f.name !== rev;
}
所以这是一个我一直在努力解决的问题。我想过滤一个对象列表,但代码似乎只适用于数组。我可以用对象达到相同的结果吗?基本上我想要的是:if card.name = jose.然后删除 jose._R 如果 card.name = jose._R 然后删除何塞。
代码:
var data = {'cards' :
[
{'name': "jose."},
{'name': "jose._R"},
{'name': "rodrigo."},
{'name': "rodrigo._R"},
{'name': "jojo."},
{'name': "jojo._R"},
]
};
let dataName = data.cards[0].name;
let rev = data.cards[0].name + "_R";
var data2 = ["jose.", "jose._R", "rodrigo.", "rodrigo._R", "jojo.", "jojo._R",];
let dataName2 = data2[0];
let rev2 = data2[0] + "_R";
if(dataName2.endsWith('.')){
data2 = data2.filter(function(f) {return f !== rev2});
};
if(dataName.endsWith('.')){
data = data.cards.filter(function(f) {return f !== rev}); // NOT WORKING! It doesn't remove the object array... :-(
};
console.log(data);
console.log(data2);
在你的过滤函数中
function(f) {
return f !== rev;
}
您正在将 整个对象 { 'name': 'rodrigo.' }
与字符串进行比较,因此它们永远不会相等。相反,您应该将名称 属性 与给定的字符串进行比较:
function(f) {
return f.name !== rev;
}