[英]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
方法 - 從JavaScript 1.6開始。 find
方法 - 自ES6以來 findIndex
方法 - 自ES6以來 例如,使用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
方法接受兩個參數:
回調函數不與迭代代碼耦合,使用thisObject參數,您甚至可以返回調用者找到的元素或更多數據。 如果找到這樣的元素, some
立即返回true
此時的老問題,但這是一個使用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.