Создать несколько массивов с разными условиями - PullRequest
0 голосов
/ 31 октября 2018

Существует массив с именем dataArray, который мне нужно разделить с другим условием. Я использую grep для создания нового с именем colorGroup1.

var colorGroup1 = $.grep(dataArray, function(item,key){
    var vote_percentage = parseInt(item.vote_percentage);
    var result = vote_percentage>=0 && vote_percentage <25;
    return result;
});

но у меня много colorGroup с другим состоянием. Если я использую grep, мне нужно работать много раз. Как это ↓

var colorGroup2 = $.grep(dataArray, function(item,key){
    var vote_percentage = parseInt(item.vote_percentage);
    var result = vote_percentage>=25 && vote_percentage <50;
    return result;
});
var colorGroup3 = $.grep(dataArray, function(item,key){
    var vote_percentage = parseInt(item.vote_percentage);
    var result = vote_percentage>=50 && vote_percentage <75;
    return result;
});

//.......and so on.......

Существуют ли методы для создания нескольких массивов, которые делают это только один раз?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Просто используйте $.each с вашим dataArray следующим образом:

var colorGroup1 = [];
var colorGroup2 = [];
var colorGroup3 = [];
$.each(dataArray, function( index, value ) {
   var vote_percentage = parseInt(value.vote_percentage);
   if(vote_percentage>=0 && vote_percentage <25)
       colorGroup1.push(value);
   if(vote_percentage>=25 && vote_percentage <50)
       colorGroup2.push(value);
   if(vote_percentage>=50 && vote_percentage <75)
       colorGroup3.push(value);
});
0 голосов
/ 31 октября 2018

Вместо использования $.grep вы можете использовать встроенный .reduce для сортировки элементов входного массива по нужным разделам. Например:

const colorGroups = dataArray.reduce((a, item) => {
  const groupIndex = Math.floor(item.vote_percentage / 25);
  a[groupIndex].push(item);
  return a;
}, [[], [], [], []]);

Тогда colorGroups будет массивом colorGroups. (например, colorGroups[0] будет эквивалентно вашей исходной переменной с именем colorGroup1).

Один массив (или объект), содержащий каждый colorGroup, вероятно, более уместен, чем наличие нескольких автономных переменных, но если вам нужны автономные переменные, вы можете деструктурировать результат:

const [colorGroup1, colorGroup2, colorGroup3, colorGroup4] =
dataArray.reduce((a, item) => {
  const groupIndex = Math.floor(item.vote_percentage / 25);
  a[groupIndex].push(item);
  return a;
}, [[], [], [], []]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...