Задать вопрос
@alex_643

Как найти значение свойства объекта в массиве по ключу свойства?

Есть массив объектов tdList, надо найти значение свойства объекта по его ключу. (пробовал так: tdList.indexOf('a').task; , но пишет что это не является функцией)
var tdList = [{task: 'a'}, {task: 'b'}, {task: 'c'}];
alert(//здесь надо вывести номер 'a' в tdList//)
  • Вопрос задан
  • 3019 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
Очень просто:

let tdList = [{task: 'a'}, {task: 'b'}, {task: 'c'}];
let i = tdList.findIndex(elem => elem.task === 'a');
alert(i);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@KnightForce
1)
Где-то в коде:
var obj = tdList[1];

В другом месте:
tdList[tdList.indexOf(obj)]

2) По нормальному:
tdList.find((item) => item.task == 'a');

3) Вариант, который соответствует вашему коду:
indexOf у массивов уже есть, так что назвал по-другому
Array.prototype.indexOfObjectValue = function(value) {
    for(var i = 0; i < this.length; i++) {
        if(typeof this[i] != 'object') continue;
        for(var key in this[i]) {
            if(this[i][key] == value) return this[i];
        }
    }
}

tdList.indexOfObjectValue('a').task
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы