Sie setzen Ihre response
zu true
, nicht die Schleife nicht durchbrechen und dann wieder eingestellt zu false
, wenn Sie einen anderen Wert erfüllen.
Sie können einfach setzen Anfangsbedingung und dann break
, wenn Sie einen Artikel finden. Sie können sogar nicht brechen, wenn Sie ein Objekt finden, aber es ist nutzlos, die Iteration fortzusetzen, wenn Sie bereits ein Objekt gefunden haben.
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);
Eine weitere elegante Art und Weise ist Funktion zu nutzen und ein Kurzschluss Rückkehr machen:
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);
Beachten Sie, dass .len
für einige hatten reas an, ich habe es mit korrekter .length
ersetzt.
noch eleganter Weg ist Array.prototype.some
zu verwenden:
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);
Verwenden 'i
Riddler
@Riddler Problem hier ist, wenn Array als aktiv haben, komplett, komplett ..Ich gebe es mir als falsch .... Aber für den Fall, dass ich vollständig, vollständig, aktiv bin, gibt es mir die Wahrheit .. Eigentlich sollte es mir auf jeden Fall wahr geben – user7350714