鍍金池/ 問答/HTML/ 這個(gè)數(shù)組的需求怎么實(shí)現(xiàn).請(qǐng)幫幫

這個(gè)數(shù)組的需求怎么實(shí)現(xiàn).請(qǐng)幫幫

我又一個(gè)這樣結(jié)構(gòu)的數(shù)組:
[{start: "2017-12-05", shiftOrderCode: "YEXF1002"}
{start: "2017-12-05", shiftOrderCode: "YYY"}
{start: "2017-12-06", shiftOrderCode: "Y001"}]
我怎么實(shí)現(xiàn)根據(jù)start,把start相同的shiftOrderCode放進(jìn)一個(gè)數(shù)組,

回答
編輯回答
裸橙

var arr = [{start: "2017-12-05", shiftOrderCode: "YEXF1002"},

       {start: "2017-12-05", shiftOrderCode: "YYY"},
       {start: "2017-12-06", shiftOrderCode: "Y001"}]
    var temp = arr.reduce(function( obj , v ){
      obj[v.start] ? obj[v.start].push( v.shiftOrderCode ) : ( obj[v.start] = []) && obj[v.start].push( v.shiftOrderCode )
      return obj;
    },{});
    
    console.log(temp); 
    // 打印結(jié)果
      // {
      // "2017-12-05": ["YEXF1002", "YYY"],
      // "2017-12-06": ["Y001"]
      // }
    console.log(temp["2017-12-05"]);//["YEXF1002", "YYY"]
2017年11月4日 21:25
編輯回答
淡墨

參考鏈接:https://segmentfault.com/q/10...
https://segmentfault.com/q/10...

對(duì)您有很大的幫助!這邊我就不幫忙實(shí)現(xiàn)了!

2017年11月15日 06:52
編輯回答
吃藕丑

方法很多,用forEach也是可以的

function dataFilter(arr) {
    const temp = {}
    arr.forEach((val) => {
        temp[val.start] = temp[val.start] || []
        temp[val.start].push(val.shiftOrderCode)
    })
    return temp
}
2017年6月12日 22:02
編輯回答
野橘

最大眾的一種方式~

     var arr = [
       {start: "2017-12-05", shiftOrderCode: "YEXF1002"},
       {start: "2017-12-05", shiftOrderCode: "YYY"},
       {start: "2017-12-06", shiftOrderCode: "Y001"}
       ]

        function getCode(data,arr){
            var newArr = [];
            for(var i = 0; i < arr.length; i++){
                if(arr[i].start === data){
                    newArr.push(arr[i].shiftOrderCode);
                }
            }
            return newArr;
        }
2017年1月3日 17:10
編輯回答
心夠野

用 lodash 比較輕松

const _ = require("lodash");

const data = [
    { start: "2017-12-05", shiftOrderCode: "YEXF1002" },
    { start: "2017-12-05", shiftOrderCode: "YYY" },
    { start: "2017-12-06", shiftOrderCode: "Y001" }
];

const result = _(data).groupBy(m => m.start)
    .mapValues(list => list.map(m => m.shiftOrderCode))
    .value();

console.log(result);
2017年1月3日 23:46
編輯回答
愛礙唉
let arr = [
    {start: "2017-12-05", shiftOrderCode: "YEXF1002"},
    {start: "2017-12-05", shiftOrderCode: "YYY"},
    {start: "2017-12-06", shiftOrderCode: "Y001"}
  ]

let temp = arr.reduce((pre, cur) => {
  if(!pre[cur.start]){
    pre[cur.start] = []
  }
  pre[cur.start].push(cur.shiftOrderCode)
  return pre
})

console.log(temp)
2017年12月10日 19:42