2016-03-02 62 views
-6

我有下面的Json。使用類似查詢的下劃線過濾器數組對象

{ 
    "results": [ 
    { 
     "id": "123", 
     "name": "Some Name" 
    }, 
    { 
     "id": "124", 
     "name": "My Name" 
    }, 
    { 
     "id": "125", 
     "name": "Johnson Johnson" 
    }, 
    { 
     "id": "126", 
     "name": "Mike and Mike" 
    }, 
    { 
     "id": "201", 
     "name": "abc xyz" 
    }, 
    { 
     "id": "202", 
     "name": "abc befd" 
    }, 
    { 
     "id": "210", 
     "name": "jki yuiu" 
    }, 
    { 
     "id": "203", 
     "name": "asdfui uiuu" 
    }, 
    { 
     "id": "204", 
     "name": "sfdhu uiu" 
    }, 
    { 
     "id": "205", 
     "name": "asdfui uyu" 
    } 
    ] 
} 

使用Underscore我想過濾上面的數據使用類似查詢的sql上的數據。 例如,如果通「2」的JSON應過濾並返回包含ID從2開始,如果我通過20應該ID爲開始用20

類似返回新JSON新JSON來SQL LIKE查詢,然後返回ñ結果匹配,

修正:我想要的數據開始ID 2或任何參數我通過我需要的數據開始與它

+2

'arr.filter(OBJ = > obj.id.indexOf(「2」))' – Tushar

+0

嘗試http://underscorejs.org/#where – georg

+0

@Tushar是對的。在Lodash/Underscore中還有一個'_.filter'方法。如果你在問這個問題之前,你會對Google感到困擾,那麼你會知道這一點,'Array.prototype.filter'是'filter javascript array'的最佳結果! –

回答

0

試試這個

function getResult(keyToFilter, valueStartsWith){ 
    return _.filter(results, function(d){ return d[keyToFilter].startsWith(valueStartsWith); }) 
} 

getResult("name", "asdfui"); 

[{ 
    "id": "203", 
    "name": "asdfui uiuu" 
}, 
{ 
    "id": "205", 
    "name": "asdfui uyu" 
}] 
+0

這有助於,謝謝 – user804401

+0

酷。 NP。謝謝。 – 2016-03-02 09:32:14

0

什麼Array.prototype.filterArray.prototype.slice? (下劃線也有類似的功能,但爲什麼要使用他們時,它可以與普通的JS來解決)

function sqlLikeFilter(data, id, maxn) { 
    return data.result.filter(function(x) { return x.id == id; }).slice(0, maxn); 
} 

console.log(sqlLikeFilter(yourData, 125, 1)); 
+0

更正:我想要以id 2開頭的數據或者任何我通過的參數,我需要以它開始的數據。我以爲下劃線將幫助 – user804401

-1

試試這個

function(id){ 
    var result = _.filter(results, function(value) { 
     return value.id === id 
    }) 
    return result; 
}