【问题标题】:Sort Json Array with LoDash使用 LoDash 对 Json 数组进行排序
【发布时间】:2014-04-30 19:27:34
【问题描述】:

我有一个 JSON 数组,其一般结构如下:

var json = [ 
  { key: 'firstName', value: 'Bill' },
  { key: 'lastName',  value: 'Mans' },
  { key: 'phone', value: '123.456.7890' }
];

实际上,会有更多的键/值对。无论哪种方式,我都在尝试使用Lodash 按键值对这个数组进行排序。目前,我正在尝试以下方法:

_.map(_.sortBy(json, key), _.values);

但是,这会导致错误提示:

[ReferenceError: key is not defined]

我怀疑这是因为密钥没有用引号括起来,如docs 所示。不幸的是,我实际上无法控制 json 的格式。实际上它被其他开发人员使用,我是最后一个使用它的人。有没有办法让我使用 lodash 按键名对 json 数组进行排序?如果有,怎么做?

谢谢

【问题讨论】:

  • 这不是JSON,看看JSON应该如何格式化

标签: javascript json lodash


【解决方案1】:

只有在调用sortBy 时才需要将密钥放在引号中。它不必在数据本身的引号中。

_.sortBy(json, "key")

另外,map 的第二个参数是错误的。它应该是一个函数,但是使用pluck 更容易。

_.pluck( _.sortBy(json, "key") , "value");

【讨论】:

  • 为什么在调用后执行 console.log(json) 时,JSON 没有排序?我误会了什么?
  • 功能? sortBypluck 返回值;两者都不对就地数据进行操作。
  • 我一定错过了什么。我想说 json = _.sortBy(json, "key");控制台.log(json);那时,我需要对结果进行排序。出于某种原因,它们仍然没有使用上面列出的方法进行排序。
  • @StephenThomas 我怎样才能重新排列数组json 而不是 pluck,这意味着返回一个排序的新数组
【解决方案2】:
_.map(_.sortBy(json, 'key'), 'value');

注意:在最新版本的 lodash 中,_.pluck 不再存在。使用_.map 作为替代品

【讨论】:

    猜你喜欢
    • 2017-09-08
    • 2022-07-22
    • 2021-07-25
    • 2015-05-10
    • 2023-04-10
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多