2016-01-19 32 views
0

我有這樣爲什麼Ramdajs.filter()在我的代碼和Ramdajs.find()不工作?

var storage = [ 
1:{"index":1, "label": abc, "value": 33}, 
2:{"index":2, "label": def, "value": 43}, 
etc. 
]; 

一個js對象,因此,現在我需要賦予「標籤」價值

我找工作來提取一個給定的內部對象:

R.filter(R.propEq("label", labelname), storage) 

,但發現( )不起作用:

R.find(R.propEq('label', labelname))(storage) 

有沒有人能告訴我這個?

回答

1

我對你的數據結構有點困惑。做這樣的,既filterfind似乎很好地工作:

var abc = "ABC", def = "DEF"; 

var storage = [ 
    {"index":1, "label": abc, "value": 33}, 
    {"index":2, "label": def, "value": 43}, 
    {"index":1, "label": abc, "value": 53}, 
]; 

var labelname = abc; 

R.filter(R.propEq("label", labelname), storage); 
//=> [{"index":1,"label":"ABC","value":33},{"index":1,"label":"ABC","value":53}] 
R.find(R.propEq("label", labelname), storage); 
//=> {"index":1,"label":"ABC","value":33} 

你可以看到在行動上這the Ramda REPL

什麼是您的記錄開始?:

var storage = [ 
1:{"index":1, "label": abc, "value": 33}, 
^ 
\---- What's this? 
+0

這是一個索引這些額外的索引號。 由於我使用localStorage,我將我的對象保存在json數組中。 – leandro713

+0

所以這是一個對象,而不是數組?我被方括號弄糊塗了。 –

+1

'find'在對象上不起作用。列表上的「find」返回第一個匹配值,但對象上的「第一個」的概念有點滑。 –

相關問題