Получить ключи объекта для свойств, имеющих непустой массив в качестве значения - PullRequest
0 голосов
/ 06 августа 2020

У меня есть массив:

417: Array(2)
0: 24301
1: 24300
length: 2
__proto__: Array(0)
418: [24562]
length: 419
__proto__: Array(0)

Теперь мне нужно получить все эти ключи из этого массива arr, длина которых больше 0. В этом случае мне нужен ответ как ['417','418'].

Я пытался отфильтровать, используя each l oop и .length каждого элемента как:

Мой код:

        console.log(arr_of_sel_units);
        $.each(arr_of_sel_units, function(k, v) {
            console.log(v.length)
        });

Но он возвращает ошибку Cannot read property 'length' of undefined

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Если для arr используется правильный тип данных (Object), вы можете использовать Array.prototype.filter() для Object.keys() (однако это будет работать для вашей нотации так же, как массив, по сути, является объектом):

const src = {a: ['1','2','3' ], b: [], c: ['1' ], d: []},

      result = Object.keys(src).filter(key => src[key].length)
      
console.log(result)      
0 голосов
/ 06 августа 2020

Используйте Object.entries, filter

let arr = [];
arr["a"] = ["1", "2", "3"];
arr["b"] = [];
arr["c"] = ["1"];
arr["d"] = [];

const res = Object.entries(arr)
  .filter(([, value]) => value.length > 0)
  .map(([key]) => key);

console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...