2016-10-05 58 views
0

我想查詢json使用下劃線js和im有點卡住。我想像從SQL一樣進行IN操作,但我不知道如何使用_.where函數來完成操作。如何使用下劃線js執行IN(SQL)操作?

例如,

在SQL查詢會是這樣:

where n = 10 AND color in ('red', 'pink', 'black'); 

但在下劃線寫這個的時候,我不能這樣做(記錄集對象的數組)

_.where(recordset, { n: 10, color: 'red' || 'pink' || 'black'}); 

這只是給我的對象,其中n = 10,顏色只是紅色。任何其他方式來做到這一點?

預先感謝

+1

關於你試過的,JS表達式「紅色」|| '粉紅'|| 'black''評估爲'red',所以Underscore甚至都沒有看到表達式的'pink'和'black'部分。我不確定Underscore,但也許它可以讓你傳遞一組值或什麼?檢查doco。 – nnnnnn

回答

2
let colors = ['red', 'pink', 'black'] 
let resultset = _.select(recordset, e => e.n === 10 && _.contains(colors, e.color)) 

或老年JS

var resultset = _.select(recordset, function (e) { 
    return e.n === 10 && _.contains(['red', 'pink', 'black'], e.color); 
}); 

_.select帶有一個數組作爲第一個參數(相當於在SQL FROM)和一個函數返回真/假作爲第二個參數(相當於SQL中的WHERE)。

+0

謝謝。爲什麼我沒有想到這一點。 – Armagetin