@alex_643

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

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

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Sportrecs Москва
от 150 000 до 200 000 ₽
03 дек. 2020, в 22:34
500 руб./за проект
03 дек. 2020, в 22:19
150000 руб./за проект
03 дек. 2020, в 21:54
300 руб./за проект