簡體   English   中英

檢查JavaScript對象中是否存在值

[英]Check if value exists in JavaScript object

如果存在特定項目(在我的情況下,機箱ID為id 2),我將如何檢查我的對象數組?

[{"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');
}

在跨瀏覽器方式中,您可以使用jQuery.grep()方法:

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

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

最簡單易懂的解決方案是循環遍歷數組,並檢查每個數組。

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;
}

有許多標准解決方案,您不需要第三方庫或迭代循環。

例如,使用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/

此時的老問題,但這是一個使用Array.find的ES6解決方案:

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

你可以使用這個條件:

if (arr.filter(function(v){return this.MachineID == 2;}).length > 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"}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM