【问题标题】:How to order by ascending and descending JSON with a condition in lodash or javascript如何使用 lodash 或 javascript 中的条件对 JSON 进行升序和降序排序
【发布时间】:2021-09-13 20:48:07
【问题描述】:

我想使用 javascript 或 lodash 按下面的对象数组的升序和降序排序。条件如下:

  1. 此数组将包含具有重复 ID 的对象
  2. 我想根据 'name' 对数组进行排序,并根据具有特定 'id' 的 'name' 排序获取数组中唯一的 'number' 字段。

这是数据。

var data = [
  { id: 1, age: 36, name: 'ram', number: 11},
  { id: 2,  age: 40, name: 'sam', number: 11 },
  { id: 3, age: 37, name: 'roy', number: 11 },
  { id: 1, age: 41, name: 'fil', number: 12 },
  { id: 2,  age: 43, name: 'joy', number: 12 },
  { id: 3, age: 46, name: 'john', number: 12 }
]

在 id='1' 时按名称按升序排序时的预期输出:

[12,11]

在 id='2' 时按名称按降序排序时的预期输出:

[11,12]

【问题讨论】:

    标签: javascript lodash


    【解决方案1】:

    你需要分解你的问题:

    1. filterid === x上的数组;
    2. sort 结果数组;
    3. map 结果值,所以你只提取number

    var data = [
      { id: 1, age: 36, name: 'ram', number: 11},
      { id: 2,  age: 40, name: 'sam', number: 11 },
      { id: 3, age: 37, name: 'roy', number: 11 },
      { id: 1, age: 41, name: 'fil', number: 12 },
      { id: 2,  age: 43, name: 'joy', number: 12 },
      { id: 3, age: 46, name: 'john', number: 12 }
    ]
    
    const id = 1;
    const result = data
      .filter(row => row.id === id)
      .sort((a, b) => a.name.localeCompare(b.name))
      .map(row => row.number);
      
    console.log(result);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 2018-05-03
      • 2020-11-09
      • 2016-11-05
      • 2021-08-21
      • 2021-07-06
      • 1970-01-01
      相关资源
      最近更新 更多