2015-02-14 2 views
1

Я следующий код (используя Chrome)Javascript фильтр массива с названиями

<script> 
var arr = [{ 
    "id": 1, 
    "fn": "bill", 
    "ln": "blogs" 
}, { 
    "id": 2, 
    "fn": "jim", 
    "ln": "jones" 
}, { 
    "id": 3, 
    "fn": "bill", 
    "ln": "smith" 
}]; 
var lookFor = "bill"; 
var result = arr.filter(function(item) { 
    return if (item.ln == lookFor) return true; 
}); 
alert(result.length); 
alert(result[0]["id"] + result[0]["fn"] + result[0]["ln"]); 
</script> 

Я пытаюсь фильтровать массив и вернуть те, что первое имя (п) является банкнота. Возврат id, fn и ln в окне сообщений.

Возможно, мне не хватает знания синтаксиса этого.

+0

Почему у вас есть несколько «возвращений» в одной строке? – thefourtheye

+0

Правильный синтаксис будет просто 'return item.ln === lookFor'. Нет необходимости в 'if (something) return true else return false' - он всегда заменяется простым' return !! something' (или просто 'return something', если это выражение всегда приводит к Boolean, операции сравнения делают. – raina77ow

ответ

0

Попробуйте

var result = arr.filter(function(item) { 
    return item.fn === lookFor; 
}); 

.... вернуть те, что первое имя (п) является банкнота

Но в своем коде вы используете item.ln. Кроме того, почему вы используете два геЬигп

return if (item.ln == lookFor) return true; 

Вам нужно просто вернуть true или false, и вы можете сделать это, как это

return item.fn === lookFor; 

если item.fn равно lookFor это будет верно, в противном случае ложной

Example

+0

Yes I означало, что это будет fn. Спасибо === и избавиться от "if" – Phil

0

Вы должны использовать

var arr = [{ 
    "id": 1, 
    "fn": "bill", 
    "ln": "blogs" 
}, { 
    "id": 2, 
    "fn": "jim", 
    "ln": "jones" 
}, { 
    "id": 3, 
    "fn": "bill", 
    "ln": "smith" 
}]; 
var lookFor = "bill"; 
var result = arr.filter(function(item) { 
     return item.ln === lookFor; 
}); 
alert(result.length); 
alert(result[0]["id"] + result[0]["fn"] + result[0]["ln"]); 

Но я думаю, его не ln, которые вы хотите, вместо этого вы хотите fn причину их нет ln, которая равна bill.

Смежные вопросы