js按照数组中的某个字段进行分组

JavaScript010

js按照数组中的某个字段进行分组,第1张

const groupBy = (array, f) =>{

    let groups = {}

    array.forEach(function (o) {

        var group = JSON.stringify(f(o))

        groups[group] = groups[group] || []

        groups[group].push(o)

    })

    return Object.keys(groups).map(function (group) {

        return groups[group]

    })

}

const arrayGroupBy = (list, groupId) =>{

    let sorted = groupBy(list, function (item) {

        return [item[groupId]]

    })

    return sorted

}

arrayGroupBy(数组, '字段名称')

你是想把数组中,每个元素,按照元素的值,按照一定规则进行重新分组吧。比如,你的例子里,元素的值以"a"打头的,放一个数组,以"b"打头的放一个数组里,首先遍历数组,然后根据规则重新挑选元素,放入新数组中。

var a=[],b=[]

for(var i=0i<example.lengthi++){

if(example[i].substring(0,1)=="a"){

a.push(example[i])

break

}

if(example[i].substring(0,1)=="b"){

b.push(example[i])

break

}

}

也可以按照其他规则进行区分,看你的区分规则了。

1,将数组array分成长度为subGroupLength的小数组并返回新数组

<pre style="margin: 0pxpadding: 0pxwhite-space: pre-wrapoverflow-wrap: break-word">function group(array, subGroupLength) {

let index = 0

let newArray = []

while(index <array.length) {

newArray.push(array.slice(index, index += subGroupLength))

}

return newArray

}

2,例如:

var Array = [1,2,3,4,5,6,7,8,9,10,11,12]

var groupedArray = group(Array, 6)

得到的groupedArray 数组为:

groupedArray[[1,2,3,4,5,6],[7,8,9,10,11,12]]</pre>