javascript - 如何使用javascript按天将数组列表拆分为单独的数组

标签 javascript lodash

如何按天拆分数组列表

const days = [
    {'name':'Mon','value':1}, 
    {'name':'Tue','value':5},
    {'name':'Wed','value':10},
    {'name':'Wed','value':30},
    {'name':'Fri','value':18},
    {'name':'Sat','value':80},
    {'name':'Sat','value':90},
    {'name':'Sun','value':20},
]

我在 wedSat 的日子里有上面的数组列表 我有 thu 的两个值 我没有值。如果日期不在列表中,我需要将重复的键值拆分为单独的数组我需要为此添加零值,例如我的输出将是

const result = [
  [1,5,10,0,18,80,20],
  [0,0,30,0,0,90,0]
]

我需要这样的结果是否可以用 javascript 完成。

最佳答案

您可以使用 native 执行此操作javascript.

算法很简单:

  1. 对于 daysArray 中的每一天您应该在给定的数组中搜索它,并且只搜索 remove第一次出现在 days .

  2. 执行步骤 1 直到days是空的。也就是说,执行第1步直到days.length == 0条件满足。

let days = [ {'name':'Mon','value':1}, {'name':'Tue','value':5}, {'name':'Wed','value':10}, {'name':'Wed','value':30}, {'name':'Fri','value':18}, {'name':'Sat','value':80}, {'name':'Sat','value':90}, {'name':'Sun','value':20} ], daysArray = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'];
let result = [];
while(days.length){
  sub_array = [];
  daysArray.forEach(function(item){
     let index = days.findIndex(a => a.name == item);
     if(index == -1)
         sub_array.push(0);
     else{
         sub_array.push(days[index].value);
         days.splice(index, 1); 
     }  
  });
  result.push(sub_array);
}
console.log(result);

关于javascript - 如何使用javascript按天将数组列表拆分为单独的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48396593/

相关文章:

javascript - Google 表格脚本数字小数位格式

javascript - 在 Ajax POST 和 JSON 中发送特殊字符

javascript - Underscore.js findWhere 嵌套对象

javascript - 如何检查父元素是否包含某个标签? - polymer

javascript - 如何在 Angular 中取消绑定(bind) $on?

javascript - 如何在 jquery 中的 <td> 中创建链接?

javascript - 如何使用 Lodash 在数字数组中按位置排序

javascript - 如何使用 lodash 比较两个数组(顺序很重要)

javascript - 使用 lodash react js 过滤具有数组值的嵌套数据

javascript - 为什么我的 2 对象深度比较失败了?