生成多个条件不同的数组

时间:2018-10-31 06:35:02

标签: javascript arrays grep

有一个名为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 :(得分:2)

您可以使用内置的$.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;
}, [[], [], [], []]);

答案 1 :(得分:0)

只需将Languages::getLangCode()$.each一起使用,如下所示:

dataArray