vladislav_boychenko
@vladislav_boychenko
Купаюсь в гривнах

Как выбрать информацию из двух массивов?

Есть объект следующего формата:

{
  "years": [2010, 2011, 2012, 2013, 2014, 2015],
  "indexes": [8.7, 4.5, 6.1, 6.5, 7.4, 4.9]
}

Не могу понять, как пройтись по нему, чтобы выбрать из него и вернуть новый объект, в котором будут данные, например с 2012 по 2014 год с соответствующими индексами.
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
function filter(obj, key, f) {
  const keys = Object.keys(obj);

  return (obj[key] || []).reduce((acc, n, i) => (
    f(n) && keys.forEach(k => acc[k].push(obj[k][i])),
    acc
  ), keys.reduce((acc, k) => (acc[k] = [], acc), {}));
}


const result = filter(obj, 'years', n => 2012 <= n && n <= 2014);

или

function filter(obj, f) {
  const keys = Object.keys(obj);
  const length = keys.length && obj[keys[0]].length;
  const result = Object.fromEntries(keys.map(k => [ k, [] ]));

  for (let i = 0; i < length; i++) {
    if (f(i, obj)) {
      keys.forEach(k => result[k].push(obj[k][i]));
    }
  }

  return result;
}


const result = filter(obj, (i, { years: { [i]: n } }) => 2012 <= n && n <= 2014);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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