Lodash orderBy返回空数组

时间:2017-03-02 12:26:58

标签: javascript lodash

我正在尝试使用lodash.orderBy npm模块按升序排序带有Objects的数组。

这是我正在使用的示例对象

var obj = [{ user: 'me', score: 100}, { user: 'you', score: 55}, { user: 'someone', score: 555 }]

一旦我拥有该对象,我将其作为第一个参数传递,并指定orderBy中的哪个键。

let sort = orderBy(obj, 'score')

但这会返回一个空数组,有什么我做错了吗?基于文档这是正确的:https://lodash.com/docs/4.17.4#orderBy

这可能是异步调用的问题,并且说Array的索引是0。

编辑:

enter image description here

Expanded

1 个答案:

答案 0 :(得分:0)

好像你实际上没有在orderBy()对象上调用lodash。请尝试以下代码:

<强> JS

const _ = require('lodash');

var obj = [[{
    user: 'me',
    score: 100
},{
    user: 'you',
    score: 55
},{
    user: 'someone',
    score: 555
}]]

var data = obj[0];

let sort = _.orderBy(data, 'score');

console.log(sort);

创建一个新变量data并为其赋值obj[0],有效地为其分配数组。然后Lodash可以按预期订购数据。

控制台输出(默认情况下按升序排列)

  [ { user: 'you', score: 55 },
  { user: 'me', score: 100 },
  { user: 'someone', score: 555 } ]

代码的可能解决方案

let obj = this.state.items;
let data = obj[0];
let sort = lodash.orderBy(data, 'score');
console.log(sort);