2014-01-07 44 views
-1

我的功能是沒有抽到localStorage的值

var map = function(doc) { 
if(doc.type=='task'){ 
    if (doc.admin == localStorage.Mobile_No) 
     emit(doc.task_creation_time, doc); 
    } 
} 

的console.log(地圖)應該返回像

function(doc) { 
if(doc.type=='task'){ 
    if (doc.admin == "1234567890") 
     emit(doc.task_creation_time, doc); 
    } 
} 
+0

歡迎來到[so]。這個函數的意思是什麼,'doc'的典型值是什麼?僅憑這一點,就很難理解到底是什麼問題。 –

+1

代碼的哪部分不起作用?你確定'doc'的價值是你認爲的嗎?你確定'localStorage.Mobile_No'的價值是你認爲的嗎? – Matt

+0

你如何告訴你無法獲得localStorage的價值? 嘗試檢查Chrome或safari的webinspector工具中的值。你可能會有想法。 –

回答

0

也許,如果你做了這樣的事情:

var map = new Function("doc", 
    "if(doc.type=='task'){" + "\n" 
    " if (doc.admin == \"" + localStorage.Mobile_No + "\")" + "\n" 
    "  emit(doc.task_creation_time, doc);" + "\n" 
    " }" + "\n" 
    "}"); 

你可以實現你似乎在尋找的東西。但爲了上天的緣故,爲什麼


JS引擎不會奇蹟般地重寫源代碼,只是因爲它在localStorage中發現了一個值。如果你改變了這個值會發生什麼?函數是否應該突然更新?

+0

爲什麼不用閉包而不是有效的'eval'來實現呢? –

+0

哦,我會的。但是'console.log(map)'不會返回OP所需的方式。我認爲世界上沒有理由這樣做,我認爲OP正在咆哮一些甚至可能不是木頭製成的東西,但這似乎符合要求。 –

+0

var map =(function(num){return function(doc){if(doc.type ==='task'&& doc.admin === num)emit(doc.task_creation_time,doc);};}( localStorage.Mobile_No));',但是,'console.log'看起來不一樣。 –