在对象数组JavaScript中过滤相似的名称



所以这是一个问题,我一直在努力一点现在。我想过滤对象列表,但代码似乎只适用于数组。我能在物体上得到同样的结果吗?基本上我想要的是:if card。name = jose。然后删除joseph . _r如果card.name = jose。

代码:

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.' }与字符串进行比较,因此它们永远不会相等。相反,您应该将name属性与给定字符串进行比较:

function(f) {
return f.name !== rev;
}

最新更新