js二维数组进行排序?

原数据:

      let arr = [
        [
          {price: 46, userUid: 0, item_name: '测试1', min: 41, max: 50},
          {price: 87, userUid: 0, item_name: '测试1', min: 81, max: 90},
          {price: 24, userUid: 89779, item_name: '测试1', min: 21, max: 30}
        ],
        [
          {price: 15, userUid: 0, item_name: '测试2', min: 11, max: 20},
          {price: 58, userUid: 0, item_name: '测试2', min: 51, max: 60},
          {price: 92, userUid: 0, item_name: '测试2', min: 91, max: 100},
          {price: 103, userUid: 0, item_name: '测试2', min: 101, max: 110},
        ],
        [
          {price: 9, userUid: 43062, item_name: '测试3', min: 1, max: 10},
          {price: 65, userUid: 0, item_name: '测试3', min: 61, max: 70},
        ],
        [
          {price: 36, userUid: 0, item_name: '测试4', min: 31, max: 40},
          {price: 72, userUid: 0, item_name: '测试4', min: 71, max: 80}
        ]
      ]

根据arr数组里面的price字段排序
期望得到:

let items = [
          [
            {price: 9, userUid: 43062, item_name: '测试3', min: 1, max: 10},
            {price: 46, userUid: 0, item_name: '测试1', min: 41, max: 50},
            {price: 87, userUid: 0, item_name: '测试1', min: 81, max: 90},
          ],
          [
            {price: 15, userUid: 0, item_name: '测试2', min: 11, max: 20},
            {price: 58, userUid: 0, item_name: '测试2', min: 51, max: 60},
            {price: 92, userUid: 0, item_name: '测试2', min: 91, max: 100},
            {price: 103, userUid: 0, item_name: '测试2', min: 101, max: 110},
          ],
          [
            {price: 24, userUid: 43062, item_name: '测试1', min: 1, max: 10},
            {price: 65, userUid: 0, item_name: '测试3', min: 61, max: 70},
          ],
          [
            {price: 36, userUid: 0, item_name: '测试4', min: 31, max: 40},
            {price: 72, userUid: 0, item_name: '测试4', min: 71, max: 80}
          ]
        ]

麻烦各位大佬帮我看看

阅读 1.6k
avatarAI BotBETA

在JavaScript中,你可以使用数组的map方法结合sort方法来根据sort属性对每个relationPosition数组进行排序。这里的关键是遍历外层数组(arr),并对每个元素的relationPosition属性进行排序。

以下是一个实现这一功能的示例代码:

let arr = [
  {
    item_level_name: "测试1",
    item_name: "测试1",
    item_stock: 3,
    item_type: 1,
    relationPosition: [
      {sort: 46, is_del: 0,is_use: 1,lottery_item_id: 92,lottery_uid: 0},
      {sort: 87, is_del: 0,is_use: 1,lottery_item_id: 92,lottery_uid: 0},
      {sort: 24, is_del: 0,is_use: 1,lottery_item_id: 92,lottery_uid: 0},
    ]
  },
  // 其他元素...
];

// 使用map遍历数组,并对每个元素的relationPosition进行排序
arr = arr.map(item => ({
  ...item, // 展开当前项,保持其他属性不变
  relationPosition: item.relationPosition.sort((a, b) => a.sort - b.sort) // 根据sort属性排序
}));

console.log(arr);

上述代码通过map函数遍历arr数组中的每个元素,并使用sort函数对每个元素的relationPosition数组进行排序。这里使用了箭头函数和扩展运算符(...)来保持元素的其他属性不变,只修改relationPosition属性。排序函数(a, b) => a.sort - b.sort表示按照sort属性的升序进行排序。

注意,你的期望输出中测试1relationPosition排序似乎有误,因为它包含了一个sort: 9的对象,这在原始数据中并不存在。我假设这是一个笔误,因此上述代码按照原始数据的sort值进行排序。如果你的意图是展示一个不同的排序结果,请相应调整数据或排序逻辑。

1 个回答
新手上路,请多包涵

arr.forEach(subArray => {
subArray.sort((a, b) => a.price - b.price);
});
let items = arr;

console.log(items);

推荐问题
logo
Microsoft
子站问答
访问
宣传栏