Javascript 对象没有方法推送
我正在查询一些对象,并尝试将它们放入数组中:Javascript 对象没有方法推送,javascript,parse-platform,Javascript,Parse Platform,我正在查询一些对象,并尝试将它们放入数组中: 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 = [] re
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')
获取正确的字符串标题。返回数组的新长度,因此赋值后,arr
现在是一个数字
对象
您希望按如下方式推送到阵列上:
results.forEach(function (result) {
arr.push(result.get('title'))
})
返回数组的新长度,因此赋值后,arr
现在是一个Number
对象
您希望按如下方式推送到阵列上:
results.forEach(function (result) {
arr.push(result.get('title'))
})
正如这里的另一个答案所说,
push()
不返回数组,而是返回一个Number
对象。不过,如果你愿意,这里有一个备选答案
var arr = results.map(function(result) {
return result.get("title");
});
这个函数实际上会返回数组作为结果,这似乎是您想要的。正如这里的另一个答案所说,
push()
不会返回数组,而是返回一个数字
对象。不过,如果你愿意,这里有一个备选答案
var arr = results.map(function(result) {
return result.get("title");
});
这个函数实际上会返回数组作为结果,这似乎是你想要的。嘿,你说得对。但是为什么,为什么
push
返回一个数字?因为Array.prototype.push
返回一个number
对象。谢谢您的解释。奇怪的是,console.log
返回数组,但是使用return
什么也不返回。如果它通过返回一个完整的新数组来工作,那就是这样expensive@alexchenco这个答案很完美。但是如果它像'arr=arr.push(result.get('title')那样工作,那么对象将在每次迭代中被复制。这将消耗大量内存。现在,它在每次迭代中都使用相同的对象。嘿,你说得对。但是为什么,为什么push
返回一个数字?因为Array.prototype.push
返回一个number
对象。谢谢您的解释。奇怪的是,console.log
返回数组,但是使用return
什么也不返回。如果它通过返回一个完整的新数组来工作,那就是这样expensive@alexchenco这个答案很完美。但是如果它像'arr=arr.push(result.get('title')那样工作,那么对象将在每次迭代中被复制。这将消耗大量内存。现在,它在每次迭代中都使用相同的对象。使用arr.push(result.get('title'))
您试图实现什么?为什么要使用另一个数组而不是只映射已有的数组?var arr=results.map(函数(result){return result.get(“title”);})
可能更容易阅读使用arr.push(result.get('title'))
您想要实现什么?为什么要使用另一个数组而不是只映射已有的数组?var arr=results.map(函数(result){return result.get(“title”);})代码>可能更容易阅读