2017-01-07 3 views
-2

Я пытаюсь создать функцию, которая принимает массив имен, и возвращает массив только тех имен, которые начинаются с «J»;фильтровать массив javascript, который начинается с «J»

Ниже приведено то, что у меня есть, но оно возвращает все остальное.

var names = ["john", "sat", "james", "mark"]; 

function filterNames(array) { 

    var namesNew = names.filter(function (item) { 
     return item.indexOf("j"); 
    }); 

    return namesNew; 
} 
+0

пытаются 'вернуть item.toLowerCase() IndexOf ("J") === 0;' – haxxxton

+0

Вы читали [документацию для 'indexOf'] (https:.//developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)? Это, как правило, хорошее место для начала. Кстати, какова цель вашей функции 'filterNames' с использованием параметра' array', который никогда не используется? –

+5

@haxxxton Не будет 'item.toLowerCase() [0] === 'j'' немного предпочтительнее? –

ответ

0

Попробуйте return item.indexOf("j") == 0;

IndexOf возвращает позицию символа в позиции.

0

этот код может помочь u.

var names = ["john", "sat", "James", "mark"]; 
var arrLen = names.length; 
for (var i=0; i<arrLen; i++) { 
    for (var j=0; j<names[i].length; j++) { 
     var asciiNum = names[i].charCodeAt(j); 
     if (asciiNum === 74 || asciiNum === 106) { 
     console.log(names[i]); // john, James 
    } 
} 

ИЛИ return !item.indexOf("j");

+0

Почему бы вам не использовать коды символов? Кроме того, ваш код записывает любую запись с «J» в любом месте, а не только с первым символом. Наконец, его вопрос заявил, что он хочет вернуть массив, а не лог матчей. –

+0

sorry.my Английский язык не очень хорошо. Но в моем коде все то, что вы говорите, может быть сделано. Я хочу отправить мышление, что я знаю –