JAVASCRIPT
VUE
REACT
NODE
ES6
TYPESCRIPT

Js操作数组系列

2019. 12. 03    

Js操作数组系列

数组补位

数组共有24小时项,返回的数组可能时间会中断,需要把前面的空位补上

before:arr = [{id:18,txt: 18},{id:19,txt: 19},{id:21,txt: 21},{id:22,txt: 22}]

after: arr = [18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 21, 22, 22]

var commentList = [...Array(24)].map(_=>0);
//判断如果0点没有值,把数组第一项赋值
if(arr[0].id > 0){
  arr.unshift(arr[0])
  arr[0].id = 0
}
for (const key in arr) {
  for (var i = 0; i < 24; i++) {
    if(arr[key].id < i){
      commentList.splice(i,1,arr[key]);
    }else{
      commentList.splice(arr[key].id,1,arr[key]);
    }
  }
}
console.log(JSON.stringify(commentList))
//[{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":0,"txt":18},{"num":19,"txt":19},{"num":19,"txt":19},{"num":21,"txt":21},{"num":22,"txt":22},{"num":22,"txt":22}]

数组补位

let data = []
let arr = [{ date: '2020', num: '哈哈' }, { date: '2019', num: 'hh' }]
let arr1 = ['2020', '2019', '2018', '2017', '2016', '2015']
data = arr1.map(v => {
  return arr.find(b => b.date.indexOf(v) !== -1) || { date: v }
})
console.log(JSON.stringify(data))
////[{"date":"2020","num":"哈哈"},{"date":"2019","num":"hh"},{"date":"2018"},{"date":"2017"},{"date":"2016"},{"date":"2015"}]

对象变数组

before:var category = {"美食":1,"交通汽车":1,"美女":1,"财经投资":1,"音乐":1}

after:[{name: "音乐", value: 1},{name: "财经投资", value: 1},{name: "美女", value: 1},{name: "交通汽车", value: 1},{name: "美食", value: 1}]

var category = {"美食":1,"交通汽车":1,"美女":1,"财经投资":1,"音乐":1}
let dataChart = [];
Object.keys(category).forEach(key => {
  let v = {
    name: key,
    value: category[key]
  };
  dataChart.unshift(v);
});
console.log(dataChart)

数组相同项合并

before: let list = [ { amount: 1, name: "家庭" }, { amount: 1, name: "是的" }, { amount: 1, name: "家庭" }, { amount: 1, name: "家庭" }, { amount: 1, name: "家庭" }, { amount: 1, name: "圣" }, { amount: 1, name: "圣诞节" }, { amount: 1, name: "圣诞节" }, { amount: 1, name: "节" }, { amount: 1, name: "诞" }, { amount: 1, name: "是的" }, { amount: 1, name: "撒旦" }, { amount: 1, name: "圣诞节" }, { amount: 1, name: "圣诞节" }, { amount: 1, name: "撒旦" }, { amount: 1, name: "旦" }, ]

after: [{a: 4, i: "家庭"},{a: 2, i: "是的"},{a: 1, i: "圣"},{a: 4, i: "圣诞节"},{a: 1, i: "节"},{a: 1, i: "诞"},{a: 2, i: "撒旦"},{a: 1, i: "旦"}]

let s = new Set()
list.map(i => {
  s.add(i.name)
})
let ss = []
Array.from(s).map(i => {
  let a = 0
  list.map(j => {
    if (i === j.name) {
      console.log(i, j.amount)
      a += j.amount
    }
  })
  ss.push({a,i})
})
console.log(ss)

数组重新组合(一维数组把id相同的放到一个数组里,写成二维数组)

before:list = [ {id:"2321321321",name: '第一,哈'}, {id:"888888888",name: '第一,ewrew哈'}, {id:"888888888",name: '第一werew,哈'}, {id:"888888888",name: '第ewrew 一,哈'}, {id:"888888888",name: '第wer一,哈'}, {id:"2321321321",name: '第dsfds,哈'}, {id:"2321321321",name: 'sd'}, {id:"2321321321",name: '第sdsaas一,哈'}, {id:"2321321321",name: '第一asdsad,哈'}, {id:"66666666",name: 'wew'}, {id:"66666666",name: 'wewe'}, {id:"66666666",name: 'wewew'}, {id:"66666666",name: 'wewew哈'}, {id:"66666666",name: 'wewew'}, ] after: [ [ {"id":"2321321321","name":"第一,哈"}, {"id":"2321321321","name":"第dsfds,哈"}, {"id":"2321321321","name":"sd"}, {"id":"2321321321","name":"第sdsaas一,哈"}, {"id":"2321321321","name":"第一asdsad,哈"} ], [ {"id":"888888888","name":"第一,ewrew哈"}, {"id":"888888888","name":"第一werew,哈"}, {"id":"888888888","name":"第ewrew 一,哈"}, {"id":"888888888","name":"第wer一,哈"} ], [ {"id":"66666666","name":"wew"}, {"id":"66666666","name":"wewe"}, {"id":"66666666","name":"wewew"}, {"id":"66666666","name":"wewew哈"}, {"id":"66666666","name":"wewew"} ] ]

let arr = new Set();
list.map(i=>{arr.add(i.id)})
let idList = Array.from(arr)
let dataArr = [];
idList.map(e=>{
  let a = [];
  list.map(i=>{
    if(e===i.id){
      a.push(i) 
    }
  })
  dataArr.push(a)
})