Страницы

Поиск по вопросам

Показаны сообщения с ярлыком indexof. Показать все сообщения
Показаны сообщения с ярлыком indexof. Показать все сообщения

вторник, 11 июня 2019 г.

Jquery: почему не работает indexOf в массиве?

Есть массив, заполненный ячейками таблицы. Хочу, чтобы при клике на ту или иную ячейку мне возвращался её индекс в массиве. Но почему-то всегда возвращается -1. В чём здесь загвоздка?
var arr = []; $('td').each(function(){ arr.push($(this)); }); $('td').click(function(){ console.log(arr.indexOf($(this))); }); table { border-collapse: collapse; } table td { padding: 20px; text-align: center; vertical-align: middle; border: 1px solid black; }



Ответ

В вашем случае this - это элемент td. Замените $(this) на this
var arr = []; $('td').each(function(){ arr.push(this); }); $('td').click(function(){ console.log(arr.indexOf(this)); }); table { border-collapse: collapse; } table td { padding: 20px; text-align: center; vertical-align: middle; border: 1px solid black; }


Поиск индекса в List

Есть класс:
public class ProductPit { public ProductPit(string prod, double cena, string ediz) { Prod = prod; Cena = cena; EdIz = ediz; }
public string Prod { get; set; } public double Cena { get; set; } public string EdIz { get; set; } }
Я создаю список с элементами ProductPit
List prpit = new List;
Как мне в списке найти номер записи в которой: prpit.Prod == "Колбаса" Знаю что есть IndexOf, но как его использовать в данном случае не пойму(


Ответ

Воспользуйтесь методом FindIndex()
Он принимает предикат, которой проверит ваше условие:
int index = list.FindIndex(x => x.Prod == "Колбаса");