2017-03-09 59 views
0

小問題,我有一個JSON數組作爲below.If我找到狀態ATLEAST一個對象爲當前我需要設置響應= true或其他false.I以下嘗試但沒有工作。可有人幫助。在JavaScript的數組對象邏輯

arr=[{"id":"1","status":"active"},{"id":"2","status":"complete"}, 
{"id":"3","status":"complete"}] 
for (var i = 0; i < arr.len; i++) {       
    if (arr[i].status == "active") { 
     response = true; 
    } else { 
     response = false; 
    } 
} 
console.log(response); 
+0

使用'I'arr.length'這裏 – Riddler

+0

@Riddler問題是,如果有數組活躍,完整,齊全..它是給我假....但萬一有蔭齊全,完整,積極它給我true..Ideally它應該給我在任何情況下 – user7350714

回答

3

使用Array#some檢查至少一個元素得到了status屬性與active值。

var arr = [{"id":"1","status":"active"},{"id":"2","status":"complete"}, 
 
{"id":"3","status":"complete"}], 
 
    response = arr.some(v => v.status == 'active'); 
 
    console.log(response);

+1

'v.status ==「積極」是真的嗎?真:假;' - >'v.status == '活躍;'' –

+0

@EvanTrimboli太謝謝你了。 –

0
var response = false; 
var arr=[{"id":"1","status":"active"},{"id":"2","status":"complete"}, 
{"id":"3","status":"complete"}] 
for (var i = 0; i < arr.length; i++) {       
    if (arr[i].status == "active") { 
     response = true; 
     break; 
    } 
} 
console.log(response); 
1

您設定responsetrue,不破環,然後將其重新設置爲false,當你遇到另一個值。

您可能只需設置初始條件,然後break當您找到一個項目。實際上,當你找到一件物品時,甚至不會中斷,但當已經找到物品時繼續迭代是沒有用的。

var arr = [{ 
 
    "id": "1", 
 
    "status": "active" 
 
    }, { 
 
    "id": "2", 
 
    "status": "complete" 
 
    }, 
 
    { 
 
    "id": "3", 
 
    "status": "complete" 
 
    } 
 
]; 
 

 
var response = false; 
 
for (var i = 0; i < arr.length; i++) { 
 
    if (arr[i].status == "active") { 
 
    response = true; 
 
    break; 
 
    }  
 
} 
 

 
console.log(response);

另一種優雅的方式是使用功能,使短路回報

var arr = [{ 
 
    "id": "1", 
 
    "status": "active" 
 
    }, { 
 
    "id": "2", 
 
    "status": "complete" 
 
    }, 
 
    { 
 
    "id": "3", 
 
    "status": "complete" 
 
    } 
 
]; 
 

 
function hasActiveStatus(a) { 
 
    for (var i = 0; i < a.length; i++) { 
 
    if (a[i].status == "active") { 
 
     return true; 
 
    } 
 
    } 
 
    
 
    return false; 
 
} 
 

 
var response = hasActiveStatus(arr); 
 
console.log(response);

請注意,您對一些有.len REAS我已用正確的.length代替它。

更優雅的方式是使用Array.prototype.some

var arr = [{ 
 
    "id": "1", 
 
    "status": "active" 
 
    }, { 
 
    "id": "2", 
 
    "status": "complete" 
 
    }, 
 
    { 
 
    "id": "3", 
 
    "status": "complete" 
 
    } 
 
]; 
 

 
var response = arr.some(function(x) { return x.status === "active"; }); 
 
console.log(response);