2016-01-11 113 views
0

我查詢了一些對象,我試圖把它們放入數組:對象沒有方法推

var Post = Parse.Object.extend('Post') 
    var query = new Parse.Query(Post) 
    query.find({ 
    success: function (results) { 
     console.log('Successfully retrieved ' + results.length + ' scores.') 
     var arr = [] 
     results.forEach(function (result) { 
     arr = arr.push(result.get('title')) 
     }) 
     console.log(arr) 
    }, 
    error: function (error) { 
     alert('Error: ' + error.code + ' ' + error.message) 
    } 
    }) 

,你可以看到arr是一個數組,但我不知道爲什麼我得到這個錯誤:

Uncaught TypeError: Object 1 has no method 'push' 

不知道我做錯了,因爲result.get('title')什麼獲得正確的字符串標題。

+0

你用'arr.push(result.get('title'))''來完成什麼?爲什麼使用另一個數組而不是隻映射一個已有的數組? –

+1

'var arr = results.map(function(result){return result.get(「title」);});'可能會更容易閱讀 – CodingIntrigue

回答

4

push返回數組的新長度,所以在賦值後,arr現在是一個Number對象。

你要推到這樣的數組:

results.forEach(function (result) { 
    arr.push(result.get('title')) 
}) 
+0

嘿,你是對的。但爲什麼,爲什麼'push'返回一個數字? – alexchenco

+3

因爲'Array.prototype.push'返回'Number'對象。 –

+0

感謝您的解釋。奇怪的是,'console.log'返回數組,但是使用'return'則不返回任何內容。 – alexchenco

2

如這裏對方回答說,push()不返回數組,而是一個Number對象。但是,如果您願意,還可以選擇其他答案。

var arr = results.map(function(result) { 
    return result.get("title"); 
}); 

這個函數實際上確實返回數組作爲結果,這似乎是你所追求的。