检查JavaScript对象中是否存在值

时间:2012-11-29 13:47:58

标签: javascript jquery

如果存在特定项目(在我的案例中,ID为2的MachineId),我如何检查我的对象数组?

[{"MachineID":"1","SiteID":"20"},{"MachineID":"2","SiteID":"20"},{"MachineID":"3","SiteID":"20"},{"MachineID":"4","SiteID":"20"}]

我试过了:

if (index instanceof machineIds.MachineID) {
    alert('value is Array!');
} else {
    alert('Not an array');
}

6 个答案:

答案 0 :(得分:13)

在浏览器中,您可以使用jQuery.grep()方法:

var item = $.grep(machineIds, function(item) {
    return item.MachineID == index;
});

if (item.length) {
    alert("value is Array!");
}

答案 1 :(得分:5)

最简单易懂的解决方案是遍历数组,并检查每个数组。

var match;
for (var i = 0; i < yourArray.length; i++) {
   if (yourArray[i].MachineId == 2) 
        match = yourArray[i];
}

请注意,如果有多个匹配项,则返回最后一个。你也可以在一个功能中打扮它。

function findByMachineId(ary, value) {
   var match;
    for (var i = 0; i < ary.length; i++) {
       if (ary[i].MachineId == value) 
            match = ary[i];
    }
    return match;
}

答案 2 :(得分:4)

有许多标准解决方案,您不需要第三方库或迭代循环。

例如,使用some();

var yourArray = [{"MachineID":"1","SiteID":"20"},{"MachineID":"2","SiteID":"20"},{"MachineID":"3","SiteID":"20"},{"MachineID":"4","SiteID":"20"}];

var params = {searchedID: "2", elementFound: null};
var isCorrectMachineID = function(element) {
    if (element.MachineID == this.searchedID);
        return (this.elementFound = element);
    return false;
};

var isFound = yourArray.some(isCorrectMachineID, params)

数组some方法接受两个参数:

  • callback - 测试每个元素的函数。
  • thisObject - 执行回调时用作此对象的对象。

回调函数不与迭代代码耦合,使用thisObject参数,您甚至可以返回调用者找到的元素或更多数据。 如果找到这样的元素,some 立即将返回true

http://jsfiddle.net/gu8Wq/1/

答案 3 :(得分:2)

此时有一个老问题,但这是一个使用Array.find的ES6解决方案:

let machine2 = machines.find((machine) => machine.id === '2');
if (machine2) {
    // ...
}

答案 4 :(得分:1)

你可以使用这个条件:

if (arr.filter(function(v){return this.MachineID == 2;}).length > 0)

答案 5 :(得分:0)

var item = [{"MachineID":"1","SiteID":"20"},{"MachineID":"2","SiteID":"20"},{"MachineID":"3","SiteID":"20"},{"MachineID":"4","SiteID":"20"}];

var newItem = item.filter(function(i) {
  return i.MachineID == 2;  //it will return an object where MachineID matches with 2
});

console.log(newItem);  // will print [{"MachineID":"2","SiteID":"20"}]