2017-03-02 112 views
0

我想要使用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

回答

0

看起來好像你實際上沒有在上調用對象。嘗試以下代碼:

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