У меня есть массив в javascript. Я пытался искать индекс, но это очень неприятно. Внутри объекта есть объект, а внутри объекта есть массив как значение.
Вот как выглядит исходный код:
rows = [{"id":"id0","cell":["array1","array2"]},{"id":"id1","cell":["array3","array4"]}];
Я пробовал это:
var v = {cell:["array1","array2"]};
rows.indexOf(v)
А также есть переключатель:
<input type="radio" name='array' value="array1, array2">
jQuery здесь:
var i = $("input:checked").val().split(',');
rows.indexOf(i)
который имеет индексный результат -1
Попробуй это. Это функциональный подход, который проходит через каждый индекс в строках и возвращает true, если есть совпадение.
var rows = [{"id":"id0","cell":["array1","array2"]},{"id":"id1","cell":["array3","array4"]}];
var index = rows.findIndex(function(i) {
return JSON.stringify(i.cell) == JSON.stringify(["array1","array2"])
});
console.log(index);
Выход должен возвращать 0
. Причина, по которой нам нужно преобразовать оба объекта в JSON.strings, объясняется тем, как javascripts обрабатывает равенство двух объектов. Вы можете прочитать об этом здесь.
["array2","array1"]
в виду, что если бы массив был ["array2","array1"]
он бы не совпадал.