当前位置: 首页 > 知识库问答 >
问题:

javascript - js二维数组进行排序?

张可人
2024-08-19

原数据:

      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}
          ]
        ]

麻烦各位大佬帮我看看

共有2个答案

荣德厚
2024-08-19

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

console.log(items);

戈博易
2024-08-19

在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值进行排序。如果你的意图是展示一个不同的排序结果,请相应调整数据或排序逻辑。

 类似资料:
  • 按列对数组进行排序,就像我想在这里对最后一行上的值进行排序一样,根据排序结果,同一行中其他列上的数字也可能会发生变化 例如

  • 问题内容: 请原谅我这是多余的还是超基本的。我要从R进入Python / Numpy,并且很难在脑海里翻转事物。 我有一个维数组,我想使用索引值的另一个n维数组进行排序。我知道我可以将其包装成一个循环,但是似乎应该有一种非常简洁的Numpyonic方式将其击败并提交。这是设置n = 2的问题的示例代码: 所以现在我有一个2 x 5的随机数数组和2 x 5的索引。我已经阅读了约10次帮助,但显然我的

  • 问题内容: 我已经实现了冒泡排序来对二维java long [] []进行排序,但是我的天哪太慢了,我将需要禁食算法,因为我将生成最大堆大小的数组,jvm将允许我, 所以我认为最好和最快的方法是使用内置的java Arrays.sort 我不介意它是否只能在第一列上排序,因为我可以更改程序以适合它,但我碰到了这一点,但对陌生人并不熟悉, 这将使我能够对整数的维数组进行排序,有人知道如何将其更改为允

  • 编写一个程序,提示用户输入一个双值nxn矩阵,并显示一个新的矩阵,其中对初始矩阵的列进行了排序。您可以使用任何排序算法来解决问题;请在代码头中指定所用排序算法的名称。您的程序必须实现排序算法;不能使用Array类中提供的排序方法。排序应该实现到一个方法中,其中返回一个新数组,而原始数组保持不变: 该程序还应该实现一个方法,打印初始和结果矩阵给用户。打印出来的应该是很好的格式。下面是一个运行示例:

  • 问题内容: 我将向您展示有关该问题的目的的示例。我之前拥有的数组以及排序后如何使用它: 之前: 之后: 我们在int矩阵中工作: 排序基于第二列Weight.Am,以查找对数据数组进行排序的过程。 我尝试了这个,但不幸的是我没有找到正确的泡菜排序方法。请问有帮助吗? 问题答案: 使用带有自定义。 作为shmosel 下文提到的,与Java 8中,您可以使用:

  • 我的任务是用C#为二维数组创建合并排序算法。数组看起来像这样 我需要从文件中取数组并按x的升序对行进行排序,同时程序要检查是否有相同x值同时不同Y值的坐标对,当数组排序后,程序要将其写入文件中。我已经为一维数组创建了算法,但是不懂如何为二维数组重写算法,这是我的代码,请帮助我

  • 尝试编写一个Python函数:def compare_lengths(x,y,z) 它接受三个数组作为参数,检查它们的长度,并按长度顺序将它们作为三个数组返回。 例如,如果函数接受[1,2,3]、[10,20,30,40]和[65,32,7]作为输入,则希望它返回([1,2,3]、[65,32,7]、[10,20,30,40])或([65,32,7]、[1,2,3]、[10,20,30,40])

  • [ {"itemname":"aaa","qty":100,"billno":"a001"}, {"itemname":"bbb","qty":300,"billno":"a002"}, {"itemname":"ccc","qty":200,"billno":"a004"}, {"itemname":"eee","qty":800,"billno":"a006"}, …… ] 想转换为下面这个