javascript中数组对象的排序

javascript中数组对象的排序,javascript,arrays,Javascript,Arrays,我有一个对象数组,如下所示。 我想用类别对数组进行排序,并找到每个类别中的总项目数。 在下面的例子中,所有带有“玩具”的类别都应该一个接一个地出现,并且也应该很容易得到计数,就像下面的例子中的数字是2(对于玩具类别) 任何方向正确的帮助都将不胜感激 提前感谢。您可以使用localeCompare使用自定义排序方法。您可以使用array#reduce获取每个类别的计数 const data=[{“category”:“toys”,“name”:“cycle”,“itemID”:1594},{“c

我有一个对象数组,如下所示。 我想用类别对数组进行排序,并找到每个类别中的总项目数。 在下面的例子中,所有带有“玩具”的类别都应该一个接一个地出现,并且也应该很容易得到计数,就像下面的例子中的数字是2(对于玩具类别)

任何方向正确的帮助都将不胜感激


提前感谢。

您可以使用
localeCompare
使用自定义排序方法。您可以使用
array#reduce
获取每个
类别的计数

const data=[{“category”:“toys”,“name”:“cycle”,“itemID”:1594},{“category”:“furniture”,“name”:“chair”,“itemID”:15954},{“category”:“furniture”,“name”:“table”,“itemID”:15344},{“category”:“books”,“name”:“twolitt”,“itemID”:153594},{“category”:“electronic”,“name”:“Tape”,“itemID”:134594},{“category”:“books”,“name”:“oneLittle”,“itemID”:1594436},{“category”:“electronic”,“name”:“TV”,“itemID”:159446},{“category”:“toys”,“name”:“car”,“itemID”:1534694}];
data.sort((a,b)=>a.category.localeCompare(b.category));
控制台日志(数据);
var distinctCount=data.reduce((r,{category})=>{
r[类别]=(r[类别]| | 0)+1;
返回r;
},{})
console.log(distinctCount)

。作为控制台包装{max height:100%!important;top:0;}
您可以使用
localeCompare
使用自定义排序方法。您可以使用
array#reduce
获取每个
类别的计数

const data=[{“category”:“toys”,“name”:“cycle”,“itemID”:1594},{“category”:“furniture”,“name”:“chair”,“itemID”:15954},{“category”:“furniture”,“name”:“table”,“itemID”:15344},{“category”:“books”,“name”:“twolitt”,“itemID”:153594},{“category”:“electronic”,“name”:“Tape”,“itemID”:134594},{“category”:“books”,“name”:“oneLittle”,“itemID”:1594436},{“category”:“electronic”,“name”:“TV”,“itemID”:159446},{“category”:“toys”,“name”:“car”,“itemID”:1534694}];
data.sort((a,b)=>a.category.localeCompare(b.category));
控制台日志(数据);
var distinctCount=data.reduce((r,{category})=>{
r[类别]=(r[类别]| | 0)+1;
返回r;
},{})
console.log(distinctCount)

.as-console-wrapper{max-height:100%!important;top:0;}
听起来您真正想做的是创建一个对象,其中category作为键:

var categories = items.reduce(function(acc, item) {
    if (typeof acc[item.category] === 'undefined') {
        acc[item.category] = [];
    }
    acc[item.category].push(item);
    return acc;
}, {});
现在你可以做:

   var num_toys = categories.toys.length; //2
或者,如果您想反复浏览玩具:

categories.toys.forEach(function(toy) {
    console.log(toy.name);
});
然后,您可以有效地免费获得“排序”(它们按类别分组),您可以轻松获得每个类别中的项目数(您只需检查项目的
.length

var项目=[
{“类别”:“玩具”,“名称”:“循环”,“项目ID”:1594},
{“类别”:“家具”,“名称”:“椅子”,“项目ID”:15954},
{“类别”:“家具”,“名称”:“表格”,“项目ID”:15344},
{“类别”:“书籍”,“名称”:“twoLittle”,“itemID”:153594},
{“类别”:“电子”,“名称”:“磁带”,“项目ID”:134594},
{“类别”:“书籍”,“名称”:“oneLittle”,“itemID”:1594436},
{“类别”:“电子”,“名称”:“电视”,“项目ID”:159446},
{“类别”:“玩具”,“名称”:“汽车”,“项目ID”:1534694}
]
var类别=项目。减少(功能(acc,项目){
if(附件的类型[项目类别]=“未定义”){
acc[项目类别]=[];
}
acc[项目.类别].推送(项目);
返回acc;
}, {});

控制台。日志(类别,类别。玩具。长度)听起来您实际上想要做的是创建一个以类别为键的对象:

var categories = items.reduce(function(acc, item) {
    if (typeof acc[item.category] === 'undefined') {
        acc[item.category] = [];
    }
    acc[item.category].push(item);
    return acc;
}, {});
现在你可以做:

   var num_toys = categories.toys.length; //2
或者,如果您想反复浏览玩具:

categories.toys.forEach(function(toy) {
    console.log(toy.name);
});
然后,您可以有效地免费获得“排序”(它们按类别分组),您可以轻松获得每个类别中的项目数(您只需检查项目的
.length

var项目=[
{“类别”:“玩具”,“名称”:“循环”,“项目ID”:1594},
{“类别”:“家具”,“名称”:“椅子”,“项目ID”:15954},
{“类别”:“家具”,“名称”:“表格”,“项目ID”:15344},
{“类别”:“书籍”,“名称”:“twoLittle”,“itemID”:153594},
{“类别”:“电子”,“名称”:“磁带”,“项目ID”:134594},
{“类别”:“书籍”,“名称”:“oneLittle”,“itemID”:1594436},
{“类别”:“电子”,“名称”:“电视”,“项目ID”:159446},
{“类别”:“玩具”,“名称”:“汽车”,“项目ID”:1534694}
]
var类别=项目。减少(功能(acc,项目){
if(附件的类型[项目类别]=“未定义”){
acc[项目类别]=[];
}
acc[项目.类别].推送(项目);
返回acc;
}, {});
控制台。日志(类别,类别。玩具。长度)一个线性代码和最简单的代码

数据=[
{“类别”:“玩具”,“名称”:“循环”,“项目ID”:1594},
{“类别”:“家具”,“名称”:“椅子”,“项目ID”:15954},
{“类别”:“家具”,“名称”:“表格”,“项目ID”:15344},
{“类别”:“书籍”,“名称”:“twoLittle”,“itemID”:153594},
{“类别”:“电子”,“名称”:“磁带”,“项目ID”:134594},
{“类别”:“书籍”,“名称”:“oneLittle”,“itemID”:1594436},
{“类别”:“电子”,“名称”:“电视”,“项目ID”:159446},
{“类别”:“玩具”,“名称”:“汽车”,“项目ID”:1534694}
]
数据排序(函数(a,b){
返回(a.category)一个线性代码和最简单的代码

数据=[
{“类别”:“玩具”,“名称”:“循环”,“项目ID”:1594},
{“类别”:“家具”,“名称”:“椅子”,“项目ID”:15954},
{“类别”:“家具”,“名称”:“表格”,“项目ID”:15344},
{“类别”:“书籍”,“名称”:“twoLittle”,“itemID”:153594},
{“类别”:“电子”,“名称”:“磁带”,“项目ID”:134594},
{“类别”:“书籍”,“名称”:“oneLittle”,“itemID”:1594436},
{“类别”:“电子”,“名称”:“电视”,“项目ID”:159446},
{“类别”:“玩具”,“名称”:“汽车”,“项目ID”:1534694}
]
数据排序(函数(a,b){

return(a.category)我把它分解成simp