Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按键对对象数组进行分组,并将分组结果与日期数组进行比较_Javascript_Arrays - Fatal编程技术网

Javascript 按键对对象数组进行分组,并将分组结果与日期数组进行比较

Javascript 按键对对象数组进行分组,并将分组结果与日期数组进行比较,javascript,arrays,Javascript,Arrays,如何将对象数组分组到具有键indexname的数组并与dates数组进行比较 var data= [ { "indexname": "red", "data": [ { "date": "2018-09-07", "count": 3 } ] }, { "indexname": "red", "data": [ {

如何将对象数组分组到具有键indexname的数组并与dates数组进行比较

var data= [
    {
      "indexname": "red",
      "data": [
        {
          "date": "2018-09-07",
          "count": 3
        }
      ]
    },
     {
      "indexname": "red",
      "data": [
        {
          "date": "2018-09-05",
          "count": 2
        }
      ]
    },
     {
      "indexname": "red",
      "data": [
        {
          "date": "2018-09-06",
          "count": 10
        }
      ]
    },
     {
      "indexname": "yellow",
      "data": [
        {
          "date": "2018-09-07",
          "count": 6
        }
      ]
    }
  ]
var dates=['2018-08-09','2018-08-07','2018-09-07','2018-09-01','2018-09-06','2018-09-05','2018-09-04','2018-09-03','2018-09-02']
var grouped = _.mapValues(_.groupBy(data.results, 'indexname'),
                          clist => clist.map(index => _.omit(index, 'indexname')));
required format
var result=[['date','red','yellow'],[2018-08-09,0,0],[2018-08-07,0,0],[2018-09-07,3,6],[2018-09-06,10,0],[2018-09-05,5,0],[2018-09-04,0,0],[2018-09-03,0,0],[2018-09-02,0,0],]
我有一个对象数组和日期数组,我想得到以下结果
如何实现这一点?

这里是您想要的输出结果的纯javascript表示。可能会对1个或2个以下循环进行改进:

var data = [{
        "indexname": "red",
        "data": [{
            "date": "2018-09-07",
            "count": 3
        }]
    },
    {
        "indexname": "red",
        "data": [{
            "date": "2018-09-05",
            "count": 2
        }]
    },
    {
        "indexname": "red",
        "data": [{
            "date": "2018-09-06",
            "count": 10
        }]
    },
    {
        "indexname": "yellow",
        "data": [{
            "date": "2018-09-07",
            "count": 6
        }]
    }
];

var dates = ['2018-08-09', '2018-08-07', '2018-09-07', '2018-09-01', '2018-09-06', '2018-09-05', '2018-09-04', '2018-09-03', '2018-09-02'];

//Prepair index1 of final array an push to see how many colors are present
var index1 = ['date'];

var colors_sorted_arr = [];
var dates_sorted_arr = [];

//Push data to index1 for colors
for (var i = 0; i < data.length; i++) {
    if (index1.indexOf(data[i].indexname) == -1) {
        index1.push(data[i].indexname)
    }
}

//Seperate out data according to color wise
for (var i = 0; i < data.length; i++) {
    for (var j = 1; j < index1.length; j++) {
        if (data[i].indexname == index1[j]) {
            if (colors_sorted_arr[(j - 1)] == undefined) {
                colors_sorted_arr[(j - 1)] = [];
                colors_sorted_arr[(j - 1)].push(data[i].data[0]);
            } else {
                colors_sorted_arr[(j - 1)].push(data[i].data[0]);
            }
        }
    }
}

//Now push index1 data to final array
dates_sorted_arr[0] = index1;

//For other data to final array loop through dates array , then inside that loop through all colors 
//and then for all colors loop inside each value to check for particular data
for (var i = 0; i < dates.length; i++) {
    dates_sorted_arr[(i + 1)] = [];
    dates_sorted_arr[(i + 1)].push(dates[i]);
    for (var j = 0; j < colors_sorted_arr.length; j++) {
        for (var k = 0; k < colors_sorted_arr[j].length; k++) {
            if (colors_sorted_arr[j][k].date == dates[i]) {
                dates_sorted_arr[(i + 1)].push(colors_sorted_arr[j][k].count);
            }
        }
    }
    for (var l = 0; l < index1.length; l++) {
        if (dates_sorted_arr[(i + 1)].length != index1.length) {
            dates_sorted_arr[(i + 1)].push(0);
        }
    }
}

//After creating above got final result what you want
console.log(dates_sorted_arr);
var数据=[{
“indexname”:“红色”,
“数据”:[{
“日期”:“2018-09-07”,
“计数”:3
}]
},
{
“indexname”:“红色”,
“数据”:[{
“日期”:“2018-09-05”,
“计数”:2
}]
},
{
“indexname”:“红色”,
“数据”:[{
“日期”:“2018-09-06”,
“计数”:10
}]
},
{
“indexname”:“黄色”,
“数据”:[{
“日期”:“2018-09-07”,
“计数”:6
}]
}
];
风险值日期=['2018-08-09','2018-08-07','2018-09-07','2018-09-01','2018-09-06','2018-09-05','2018-09-04','2018-09-03','2018-09-02'];
//最终数组的Prepair index1推送以查看存在多少颜色
var index1=['date'];
var colors_sorted_arr=[];
var日期(已排序)arr=[];
//将数据推送到颜色的index1
对于(变量i=0;i