推送前检查对象是否存在于数组中

agD*_*Dev 2 javascript mvvm

我有一个空数组和一个可选树,每当用户检查或取消检查节点时,我都会推送节点的ID,并且复选框为true或false。

但是现在,如果用户将检查然后取消选中一个节点,那么在同一节点的数组中将有两个对象,我如何确保不会发生这种情况?

//creating empty array

var checkedItems = []; 

//(in kendo observable) on user selection I'm pushing the checked node to array

onItemChecked : function (e) {
    var node = e.sender.dataItem(e.node);
    checkedItems.push({Id: node.Id, IsChecked: node.checked});
},
Run Code Online (Sandbox Code Playgroud)

und*_*ned 5

您可以在推送新对象之前,检查是否存在具有该ID的对象。

var el = checkedItems.filter(function(el) {
    return el.Id === node.Id;
});

if (el.length) {
    el[0].IsChecked = node.checked;
} else {
   // push a new object
}
Run Code Online (Sandbox Code Playgroud)