Получить индекс массива, который содержит / включает строковое значение в javascript / node.js

Мой вопрос в том, как получить индекс массива, который содержит / включает строковое значение. Смотрите мой код ниже, чтобы получить желаемый результат.

Это простой код для получения индекса массива:

var myarr = ["I", "like", "turtles"];
var arraycontainsturtles = (myarr.indexOf("turtles"));
console.log(arraycontainsturtles) // the result will be 2

Я хочу получить результат индекса с помощью примера кода ниже:

var myarr = ["I", "like", "turtles"];
var arraycontainsturtles = (myarr.indexOf("turt"));
console.log(arraycontainsturtles) // i want the result will be 2 with the contains string just the 'turt' only. 

Как получить индекс со строковым значением, как в примере номер 2? Реальный результат числа 2 будет -1.

Как мне это сделать?

1
0
1 255
4

Ответы 4

var myarr = ["I", "like", "turtles"];
    var arraycontainsturtles = -1;
    for(i=0;i<myarr.length;i++){
    if((myarr[i].indexOf("turt")) != -1){
           arraycontainsturtles = i;
    }
    }
    console.log(arraycontainsturtles)

В этом случае он работает, но не возвращает первый индекс, если "turt" существует более одного раза в массиве.

Kevin Drost 11.04.2018 13:43

@KevinDrost, нет соответствующего запроса для получения только первого индекса. off, вы можете использовать break, чтобы выйти из цикла после того, как узнаете индекс.

nisar 11.04.2018 13:49

Надеюсь, это то, что ты ищешь

var myarr = ["I", "like", "turtles"];
var search = "turt";
var arraycontainsturtles = myarr.reverse().reduce((a, v, i) => v.indexOf(search) != -1 ? Math.abs(i - myarr.length + 1) : a, -1);
console.log(arraycontainsturtles)

Используйте findIndex вместо indexOf, поскольку вы можете предоставить функцию.

var myarr = ["I", "like", "turtles"];
var arraycontainsturtles = (myarr.findIndex(function(item){
    return item.indexOf("turt")!==-1;
}));
console.log(arraycontainsturtles) // 2

спасибо решено. другой ответ хорош. но этот код очень простой .. спасибо @Kevin Drost

Didi Rumapea 11.04.2018 13:52
var myarr = ["I", "like", "turtles"];
var arraycontainsturtles = function(arr, str){
  let filter = -1;
  filter = arr.findIndex((e) => {
     return e.indexOf(str) > -1 ; 
  });
 return filter;
}

console.log(arraycontainsturtles(myarr, "turt")) 

Другие вопросы по теме