我有一個萬多對象代表的一些信息的兩個ids
看起來像:如何構建基於兩個鍵查找在Javascript
muchData = [
{
ids: ["123", "234"],
interestingData: 1
},
{
ids: ["123", "345"],
interestingData: 2
},
...
];
我目前使用lodash找到一個對象
那匹配兩個ids
等:
function findData(id1, id2) {
return _.filter(muchData, function(d) {
return d.ids.indexOf(id1) > -1 && d.ids.indexOf(id2) > -1
})
}
那裏沒有我將接收ID1和ID2的次序的保證(即,ids
陣列中的第一值可以是任一或ID1 ID2)。
有沒有更好的方式來表示這個問題,以避免每次查找都要過濾整個muchData
數組?
你需要多少次調用'findData'?重構數據是否值得? – Derlin
客戶端上可能有50多次。它有助於在用戶使用不同的過濾器時填充信息行。每次應用過濾器時,我都可以從服務器獲取數據,但所有其他數據都已經在客戶端上,我試圖避免這種往返。我很樂意重組數據,但最好將所有內容都保存在客戶端。 –
是否有'id'屬性值(數組中的那些)保證唯一?如果是這樣的話,我會建議將各個ID結合在一起(從id:[「123」,「234」]到'id:「123234」'),然後搜索,然後通過組合的屬性值*或*創建一個數組並使用組合鍵作爲索引(儘管這可能會創建一個包含許多空/未定義條目的非常大的數組)。但是,如果沒有保證的唯一值,那麼您僅限於搜索,因爲您已經*或*必須重新設計後端以保證唯一的'id'屬性值... –