gpt4 book ai didi

javascript - 如何按属性对数组进行分组并重新索引结果

转载 作者:行者123 更新时间:2023-11-29 16:38:09 24 4
gpt4 key购买 nike

我正在尝试按属性对项目数组进行分组,然后从 0 开始重新索引结果。

以下函数返回一组分组的项目。

groupItemBy(array, property) {
let hash = {},
props = property.split('.');
for (let i = 0; i < array.length; i++) {
let key = props.reduce( (acc, prop) => {
return acc && acc[prop];
}, array[i]);
if (!hash[key]) hash[key] = [];
hash[key].push(array[i]);
}
return hash;
}

结果是一个数组数组,类似于:

[{
"1193312":[
{
"description":"Item 1",
"number": "1193312"
}
],
"1193314":[
{
"itemDesc":"Item 2"},
"number": "1193314"
{
"description":"Item 3",
"number": "1193314"
}
],
etc...
}]

从这里我想将 1193312 映射到 0,将 1193314 映射到 1 等。

我在结果上尝试了.filter(val => val),但这似乎没有效果。

最佳答案

您需要使用中间 key 替换:

function groupItemBy(array, property) {
let hash = {}
let props = property.split('.')
let keys = []

for (let i = 0; i < array.length; i++) {
let key = props.reduce((acc, prop) => {
return acc && acc[prop];
}, array[i]);
let subst = keys.indexOf(key)
if (subst === -1) {
keys.push(key)
subst = keys.length - 1
}
if (!hash[subst]) hash[subst] = [];
hash[subst].push(array[i]);
}
return hash;
}

[https://jsfiddle.net/05t9141p/ ]

关于javascript - 如何按属性对数组进行分组并重新索引结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49428322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com