如果两个参数的值不存在,则推入对象

时间:2016-03-03 19:36:12

标签: javascript jquery

我有一个像下面这样的对象。

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,以及是否确实存在其他问题。

4 个答案:

答案 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