我有一个像下面这样的对象。
var obj=[
{ 'Id': 'new_1', 'Name': 'Ticket1', 'TaskId': 'abc', 'ResourceId': '123' },
{ 'Id': 'new_2', 'Name': 'Ticket2', 'TaskId': 'cde', 'ResourceId': '225' },
{ 'Id': 'new_3', 'Name': 'Ticket2', 'TaskId': 'cde', 'ResourceId': '225' },
];
此处Id不是唯一的,但项目在TaskId和ResourceId上应该是唯一的。
Thatis在推入数组时,我想检查是否存在类似的TaskId和ResourceId,以及是否确实存在其他问题。
答案 0 :(得分:0)
你可以使用这样的for循环遍历你的对象:
for(var i=0; i<obj.length; i++)
然后,您只需使用if和括号来检查您想要推送的内容是否已经在内部。
答案 1 :(得分:0)
您可以使用Array.prototype.some
检查元素是否已存在
function push(o) {
if (!obj.some(function(e) {
return e.TaskId == o.TaskId && e.ResourceId == o.ResourceId;
})) {
obj.push(o);
}
}
// will not pushed
push({ 'Id': 'new_2', 'Name': 'Ticket2', 'TaskId': 'cde', 'ResourceId': '225' })
// will pushed
push({ 'Id': 'new_2', 'Name': 'Ticket2', 'TaskId': 'cdet', 'ResourceId': '2255' })
console.log(obj);
答案 2 :(得分:0)
if(!inArray(obj, newObject)){
obj.push(newObject);
}
function inArray(array, row){
for(var i in array){
if(array[i].Name == row.Name
&& array[i].TaskId == row.TaskId
&& array[i].ResourceId == row.ResourceId){
return true;
}
}
return false;
}
答案 3 :(得分:0)
您可以使用Array.prototype.some函数检查数组中是否存在事物:
extract