鍍金池/ 問答/HTML/ 數(shù)組拆分問題

數(shù)組拆分問題

 datalist: [
          {categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "熱銷商品"},
          {categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "熱銷商品"},
          {categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "熱銷商品"},
          {categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "推薦商品"},
          {categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "推薦商品"},
          {categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "促銷商品"},
          {categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "促銷商品"},
          {categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "促銷商品"},
          ……
        ]

按照categoryName的不同拆分成幾個數(shù)組。應(yīng)該怎么寫?

[{categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "熱銷商品"},
{categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "熱銷商品"},
{categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "熱銷商品"},];
[{categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "推薦商品"},
{categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "推薦商品"},]
[{categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "促銷商品"},
 {categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "促銷商品"},
 {categoryId: "f5665104-cff9-47c9-b44c-b92694e45767", categoryName: "促銷商品"},]
回答
編輯回答
焚音

樓主,如果你已經(jīng)排好序的話,是不是要這個效果:

var newDataArray = dataList.reduce((target,current)=>{
    if(target[target.length-1] == null || target[target.length-1][target[target.length-1].length - 1].categoryName !== current.categoryName) {
        target.push([current])
    } else {
        target[target.length-1].push(current)
    }
    return target

}, []);

console.log(newDataArray)
2017年5月24日 01:25
編輯回答
萌吟
//var data = {}
var data = {sort:[]}
datalist.forEach((item,index)=>{
    var s = item.categoryName
    data[s] ? data[s].push(item) : (data[s] = [item],data.sort.push(s))
    //data[s] ? data[s].push(item) : data[s] = [item]
})
//data = Object.values(data)
//上面object轉(zhuǎn)數(shù)組是無序的,所以加個sort記錄所有的商品類型及順序
data = data.sort.map((item,index)=>{
    return data[item]
})

下面快點(diǎn)

var data = []
datalist.forEach((item,index)=>{
    if(data.length == 0 || item.categoryName!==data[data.length-1][0].categoryName){
        data.push([])
    }
    data[data.length-1].push(item)
})
2017年11月5日 13:05