Получить указанные c данные из массива и поместить в другой массив - PullRequest
0 голосов
/ 20 января 2020

У меня есть этот результат в javascript, и я хочу получить данные, которые имеют значение больше 3, и я хочу поместить в другой массив.

"availableDates": {
  "2020-01-24": 1,
  "2020-01-23": 3,
  "2020-01-22": 2,
  "2020-01-21": 1,
  "2020-01-25": 4,
  "2021-01-07": 1
}

Я группирую здесь:

const formattedDate = x.reduce((acc,el) => {
  const date = el.split(" ")[0];
  acc[date] = (acc[date] || 0) + 1;
  return acc;
}, {});

Теперь я хочу поместить в другой массив всю ту дату, которая имеет значение больше 3. Например

newarray = [ "2020-01-23", "2020-01-25" ]

Ответы [ 3 ]

3 голосов
/ 20 января 2020

Почему бы не использовать простые .filter() над клавишами "availableDates":

const grouped =  {
  "availableDates": {
      "2020-01-24": 1,
      "2020-01-23": 3,
      "2020-01-22": 2,
      "2020-01-21": 1,
      "2020-01-25": 4,
      "2021-01-07": 1
  }
};

const newArray = Object.keys(grouped.availableDates).filter((key) => grouped.availableDates[key] >= 3);

console.log(newArray);
2 голосов
/ 20 января 2020

Вы можете просто использовать for...in l oop для перебора ключей объекта и их фильтрации:

const data = {
  "2020-01-24": 1,
  "2020-01-23": 3,
  "2020-01-22": 2,
  "2020-01-21": 1,
  "2020-01-25": 4,
  "2021-01-07": 1
};

const reducer = (obj, val) => {
  const result = [];

  for(key in obj) {
    if(obj[key] >= val)
      result.push(key);
  };
  
  return result;
};

console.log(reducer(data, 3));
1 голос
/ 20 января 2020

Вы могли бы иметь что-то вроде этого. Я пишу полный пакет кода, чтобы вы могли скопировать / пройти тест

var availableDates = new Array()
var availableDates =  {
        "2020-01-24": 1,
        "2020-01-23": 3,
        "2020-01-22": 2,
        "2020-01-21": 1,
        "2020-01-25": 4,
        "2021-01-07": 1
    }
var results = new Array();
 for (date in availableDates){
   if (availableDates[date] >= 3){
      results.push(date)    
  }
 }

 console.log(results) 
...