我有一个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数组进行排序?如果是这样,怎么样?
谢谢
答案 0 :(得分:13)
只有在调用sortBy
时才需要将密钥放在引号中。它不必在数据本身中引用。
_.sortBy(json, "key")
另外,map
的第二个参数是错误的。它应该是一个函数,但使用pluck
更容易。
_.pluck( _.sortBy(json, "key") , "value");
答案 1 :(得分:4)
_.map(_.sortBy(json, 'key'), 'value');
注意:在最新版本的lodash中,_.pluck
不再存在。请使用_.map
作为替代品