gpt4 book ai didi

javascript - 如何根据属性值拆分数组而不改变键的顺序?

转载 作者:行者123 更新时间:2023-12-01 05:12:19 25 4
gpt4 key购买 nike

我有一个像这样的数组:

var test_array = [
{
"test_name":"vna",
"header_region":"vna_results",
"header_name":"larm",
"value_title":"area"},
{
"test_name":"vna",
"header_region":"vna_results",
"header_name":"larm",
"value_title":"area"},
{
"test_name":"lma",
"header_region":"lma_results",
"header_name":"larm",
"value_title":"area"},
{
"test_name":"lma",
"header_region":"lma_results",
"header_name":"larm",
"value_title":"area"},
{
"test_name":"uni",
"header_region":"uni_results",
"header_name":"larm",
"value_title":"area"},
{
"test_name":"uni",
"header_region":"uni_results",
"header_name":"larm",
"value_title":"area"}
]

我想根据属性值将其拆分为对象:header_name

{
"vna_results":[
{
"test_name":"vna",
"header_region":"vna_results",
"header_name":"larm",
"value_title":"area"
},
{
"test_name":"vna",
"header_region":"vna_results",
"header_name":"larm",
"value_title":"area"
}
],
"lma_results":[
{
"test_name":"vna",
"header_region":"lma_results",
"header_name":"larm",
"value_title":"area"
},
{
"test_name":"vna",
"header_region":"lma_results",
"header_name":"larm",
"value_title":"area"
}
],
"uni_results":[
{
"test_name":"vna",
"header_region":"uni_results",
"header_name":"larm",
"value_title":"area"
},
{
"test_name":"vna",
"header_region":"uni_results",
"header_name":"larm",
"value_title":"area"
}
]
}

我正在使用以下函数来实现此目的:

function groupBy(arr, property) {
return arr.reduce(function(memo, x) {
if (!memo[x[property]]) { memo[x[property]] = []; }
memo[x[property]].push(x);
return memo;
}, {});
}



var splitted = groupBy(test_array, 'header_region');

but the output result changed the order of keys: lma_results first then uni and then vna..
lmi_results:{...},
uni_results:{...},
vna_results:{...},

expected order- same as in array
i don't want to change the order. how to achieve this. Thanks in advance.

最佳答案

var test_array = [{
"test_name": "vna",
"header_region": "vna_results",
"header_name": "larm",
"value_title": "area"
},
{
"test_name": "vna",
"header_region": "vna_results",
"header_name": "larm",
"value_title": "area"
},
{
"test_name": "lma",
"header_region": "lma_results",
"header_name": "larm",
"value_title": "area"
},
{
"test_name": "lma",
"header_region": "lma_results",
"header_name": "larm",
"value_title": "area"
},
{
"test_name": "uni",
"header_region": "uni_results",
"header_name": "larm",
"value_title": "area"
},
{
"test_name": "uni",
"header_region": "uni_results",
"header_name": "larm",
"value_title": "area"
}
]

const result = test_array.reduce((acc, x) => ({
...acc,
[x.header_region]: [...(acc[x.header_region] || []), x]
}), {});

console.log(result)

关于javascript - 如何根据属性值拆分数组而不改变键的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60598718/

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