2017-01-27 11 views
0

Я пытаюсь вернуть все массивы, которые соответствуют состоянию property gmarker[i].pricefirsthour, равному 2. Как я могу это достичь? Это ниже только пример:Вернуться все массивы, отвечающие условиям свойства

for (var i = 0; i < gmarker.length; i++) { 
    if (gmarker[i].pricefirsthour = 2) { 
     console.log("is equal to 2"); 
    }; 
} 

ответ

1

gmarker[i].pricefirsthour = 2 не является условием, но задание, которое вычисляется в 2 (и, таким образом, всегда truthy). Вам нужны == или ===, а не =.

С другой стороны, короче, с новыми функциями JS:

gmarker.filter(x => x.pricefirsthour === 2) 
+0

@ Rockafella-будьте осторожны со стрелкой функций, они были введены с ECMAScript 2015 и может не поддерживаться всеми браузерами, что вы заботитесь о (например, любой версия, если IE), см. [* Матрица поддержки MDN *] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions). – RobG

1

Использование Array.prototype.filter

gmarker = gmarker.filter(function(o){ 
    return o.pricefirsthour == 2; 
}); 

var gmarker = [{pricefirsthour:2},{pricefirsthour:21},{pricefirsthour:2},{pricefirsthour:7},{pricefirsthour:5},{pricefirsthour:2}]; 
 
gmarker = gmarker.filter(function(o){ 
 
    return o.pricefirsthour == 2; 
 
}); 
 
console.log(gmarker);