Lodash orderBy返回空数组

问题描述:

我想要使用lodash.orderBy npm模块以升序排列对象的数组。Lodash orderBy返回空数组

这是我使用

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

这可能是与异步调用的问题,并说该数组的索引是0

编辑:

enter image description here

Expanded

+0

你导入'lodash'地方?你应该使用'lodash.orderBy',而不是自己的函数。 – Ksyqo

+0

@Valberthe正确,我正在导入,例如从'lodash.orderby'导入orderBy – rizzy

+1

您必须做错某事,因为您的示例正在为我工​​作。 – Amberlamps

看起来好像你实际上没有在上调用对象。尝试以下代码:

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); 
+0

OrderBy本身适用于静态内容,我相信这个问题是因为它是异步数据,所以包含10个项目的数组记录为Array [0]而不是Array [9] – rizzy

+0

您是否正在使用回调? –

+0

这是一个使用Fetch api的React Web应用程序,所以在获取请求之后,我使用返回的对象设置了状态,然后记录返回Array [0]的内容,但它内部包含项目。 我在想,lodash很困惑,认为它是一个空阵列。 – rizzy