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

Как фильтровать массив?

"stocks": {
                "34": {
                "2": "35",
                "3": "0",
                "4": "58",
                "5": "0"
            },
            "35" : {
                "5": "0",
                "6": "66"
            }

Подскажите пожалуйста, как здесь вернуть массив номеров, у которых значение больше нуля?
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 2
const stocks = {
  34: { 2: '35', 3: '0', 4: '58', 5: '0' },
  35: { 5: '0', 6: '66' },
};

Object.values(stocks)
  .map(entry =>
    Object.entries(entry)
      .filter(([key, value]) => parseInt(value, 10) > 0)
      .map(pair => pair[0])
  )
  .flat();

или
Object.values(stocks)
  .map(entry =>
    Object.entries(entry).reduce((acc, [key, value]) => {
      if (parseInt(value, 10) > 0) {
        acc.push(key);
      }
      return acc;
    }, [])
  )
  .flat();
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
const result = Object.values(stocks).reduce((acc, n) => (
  Object.entries(n).forEach(([ k, v ]) => +v > 0 && acc.push(k)),
  acc
), []);

или

const result = [];
for (const k1 in stocks) {
  for (const k2 in stocks[k1]) {
    if (Number(stocks[k1][k2]) > 0) {
      result[result.length] = k2;
    }
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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