使用LoDash对Json数组进行排序

use*_*584 7 javascript json lodash

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

var json = [ 
  { key: 'firstName', value: 'Bill' },
  { key: 'lastName',  value: 'Mans' },
  { key: 'phone', value: '123.456.7890' }
];
Run Code Online (Sandbox Code Playgroud)

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

_.map(_.sortBy(json, key), _.values);
Run Code Online (Sandbox Code Playgroud)

但是,这会导致错误,指出:

[ReferenceError: key is not defined]
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Ste*_*mas 14

您只需在调用时将密钥放在引号中sortBy.它不必在数据本身中引用.

_.sortBy(json, "key")
Run Code Online (Sandbox Code Playgroud)

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

_.pluck( _.sortBy(json, "key") , "value");
Run Code Online (Sandbox Code Playgroud)