检查JavaScript对象中是否存在值

检查JavaScript对象中是否存在值,javascript,jquery,Javascript,Jquery,如果存在一个特定项(在我的例子中是id为2的MachineId),我将如何签入我的对象数组 我试过这个: if (index instanceof machineIds.MachineID) { alert('value is Array!'); } else { alert('Not an array'); } 最容易理解的解决方案是在阵列上循环,并检查每个阵列 var match; for (var i = 0; i < yourArray.length; i++)

如果存在一个特定项(在我的例子中是id为2的MachineId),我将如何签入我的对象数组

我试过这个:

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

最容易理解的解决方案是在阵列上循环,并检查每个阵列

var match;
for (var i = 0; i < yourArray.length; i++) {
   if (yourArray[i].MachineId == 2) 
        match = yourArray[i];
}
var匹配;
for(var i=0;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;
}
函数findByMachineId(ary,值){
var匹配;
对于(变量i=0;i
您可以使用以下条件:

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

通过跨浏览器方式,您可以使用以下方法:

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

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

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

  • -从JavaScript 1.6开始
  • -自ES6以来
  • -自ES6以来
例如,使用
some()

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

  • callback-用于测试每个元素的函数
  • thisObject—在执行回调时用作此对象的对象
回调函数不与迭代代码耦合,使用thisObject参数,您甚至可以将找到的元素或更多数据返回给调用方。 如果找到这样的元素,
some
会立即返回true


这是一个老问题,但这里有一个ES6解决方案,它使用:


对于指定的数据,您应该与
“2”
进行比较,而不是与
2
进行比较。或者只删除Chrome 46中的一个
=
标志。在原型中看不到它。这个功能真的适用于所有浏览器吗?请看这里:这里:请描述您的代码工作或使用自我解释的注释!请记住,这并不适用于所有IE和一半的移动浏览器(截至2016年11月):当然。如果您使用的是ES6,那么您应该使用Babel(或类似的transpiler)
var item = $.grep(machineIds, function(item) {
    return item.MachineID == index;
});

if (item.length) {
    alert("value is Array!");
}
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)
let machine2 = machines.find((machine) => machine.id === '2');
if (machine2) {
    // ...
}
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"}]