gpt4 book ai didi

javascript - 寻找一种在 javascript 中对对象数组进行排序的方法

转载 作者:行者123 更新时间:2023-11-28 18:41:10 26 4
gpt4 key购买 nike

所以我有一个如下所示的 JSON 数组:

[
{
row: [
{
boat: {
description: 'Books',
version: '2',
id: 6
},
airplanes: [
{
airplane: [
{
description: 'DVD',
version: 2,
uid: 69,
wid: 65,
id: 84
}
],
trains: {
train: [
{
description: 'Pictures',
version: 2,
id: 149
}
],
actions: [
{
description: 'This is a really long sentence.',
version: 2,
tid: 69.01,
id: 452
},
{
description: 'article 2',
version: 2,
tid: 69.02,
id: 453
},
{
description: 'developer 1',
version: 2,
tid: 69.03,
id: 454
}
]
}
},
{
airplane: [
{
description: 'Games',
version: 2,
uid: 65,
wid: 61,
id: 80
}
],
trains: {
train: [
{
description: 'another great descriptions.',
version: 2,
id: 145
}
],
actions: [
{
description: 'being indecisive is good.',
version: 2,
tid: 65.01,
id: 442
},
{
description: 'couches are comfortable',
version: 2,
tid: 65.02,
id: 443
}
]
}
}
]
}
]
}
]

我试图按“wid”升序对上述输出进行排序,但仍然能够保留整体顺序。例如,上面数组的元素 0 中的 wid 为 65,数组的元素 1 中的 wid 值为 61。因此,元素 1 和元素 0 应该交换。有没有内置的 javascript 方法可以像这样对 json 进行排序?

我将得到一个比提供的示例大得多的 json 数组输出。

最佳答案

Underscore 和 LoDash 都有一个排序方法,可以满足您的需求。在此示例中,我假设您将显示的数据结构存储在名为 data 的变量中。

 _.each(data, function(obj) {
_.each(obj.row, function(row) {
// note the reassignment, _.sortBy does not sort in-place
row.airplanes = _.sortBy(row.airplanes, function(airplane) {
return airplane.wid; // This will sort ascending.
// To sort descending, simply multiply by -1
});
});
});

那么这是在做什么呢?它获取根数据结构中的每个数组元素并对其进行循环(即第一个 _.each)。然后,在每个对象中,它循环遍历每个 row 元素,并根据每个对象中包含的 wid 元素对 row.airplanes 数组进行排序。

希望这对您有帮助。顺便说一句,您发布的数据是严格无效的 JSON。每个键都应该用双引号引起来,即 "row",而不仅仅是 row,并且单引号对于分隔字符串无效,即 "DVD" 而不是 'DVD'。此外,您的 boat 版本是一个字符串,而您的其他版本标识符是整数,因此最好尝试将版本标识符保留为整数。

关于javascript - 寻找一种在 javascript 中对对象数组进行排序的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36048458/

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