使用LoDash对Json数组进行排序

时间:2014-04-30 19:27:35

标签: javascript json lodash

我有一个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数组进行排序?如果是这样,怎么样?

谢谢

2 个答案:

答案 0 :(得分:13)

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

_.sortBy(json, "key")

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

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

答案 1 :(得分:4)

_.map(_.sortBy(json, 'key'), 'value');

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