Javascript JS代码返回错误
我是JS新手,我不得不将其用于云代码解析功能。我有一个名为“user_picture”的类,通过代码查询所有对象,并遍历其“City”属性。我希望响应是一组独特的城市名称。不管怎样,下面是我正在编写的代码:Javascript JS代码返回错误,javascript,parse-platform,Javascript,Parse Platform,我是JS新手,我不得不将其用于云代码解析功能。我有一个名为“user_picture”的类,通过代码查询所有对象,并遍历其“City”属性。我希望响应是一组独特的城市名称。不管怎样,下面是我正在编写的代码: Parse.Cloud.define("cities", function(request, response) { var query = new Parse.Query("user_picture"); query.find({ success: function(results) {
Parse.Cloud.define("cities", function(request, response) {
var query = new Parse.Query("user_picture");
query.find({
success: function(results) {
var cities = new Array();
for (var object in results){
var tempArray = [object.get("city")];
if (cities.length > 0){
for (var i = 0; i < cities.length; i++){
if (cities[i].get("city") == object.get("city")) {
break;
} else if (i == cities.length-1) {
cities = cities.concat(tempArray);
}
}
}
}
response.success (cities);
}, error: function() {
response.error("Error");
}
});});
并且响应返回null。我试着从结果数组中打印一个对象,以确保我收到了正确的查询,并且它可以很好地打印城市。有什么问题吗 for in循环迭代对象文本的所有键。由于
results
是一个数组,它将遍历数组的键,这些键是“0”、“1”等
这意味着对象
变量将保存这些关键值。因为它们不是对象,所以它们没有名为get的方法
您需要一个forEach
循环
results.forEach(function(object){
var tempArray = [object.get("city")];
if (cities.length > 0){
for (var i = 0; i < cities.length; i++){
if (cities[i].get("city") == object.get("city")) {
break;
} else if (i == cities.length-1) {
cities = cities.concat(tempArray);
}
}
}
}
results.forEach(函数(对象){
var tempArray=[object.get(“city”);
如果(cities.length>0){
对于(变量i=0;i
}))
或者,如果您的目标是ES3,那么您应该使用for循环
for(var i = 0, length = results.length; i< length; i++){
var object = results[i];
var tempArray = [object.get("city")];
if (cities.length > 0){
for (var i = 0; i < cities.length; i++){
if (cities[i].get("city") == object.get("city")) {
break;
} else if (i == cities.length-1) {
cities = cities.concat(tempArray);
}
}
}
}
for(var i=0,length=results.length;i0){
对于(变量i=0;i
我记得曾经使用过Parse对象,似乎有时可以将它们作为对象(通过直接参数访问)访问,有时还可以使用get
方法访问,看起来您将数组访问和对象(通过Parse)访问方法混为一谈
此外,您的列表生成器似乎并不是真正在构建一个唯一的列表。您只需检查当前城市是否与要添加的城市相同
我可能会做更多类似的事情(对于成功方法):
函数(解析结果){
var cities={};
var ii=0;
var nResults=parseResults.length
对于(;iI,results
)是什么类型的对象?它告诉您它没有方法get
。也许您的意思是object.city
?哪一行导致了错误?@ppoliani我无法识别错误,因为代码正在Parse.com服务器上运行。@Mathletics results是数组类型。其中的每个对象都是dictionary类型(讲iOS)。我试图返回结果[0]。获取(“城市”)它返回指定对象的城市。为什么提供一个使用特定库的示例?不需要在项目中包含underline.js来迭代数组。获取点。我已将代码段更新为使用vanilla js。此代码仅假设使用现代javascript(ECMAScript 5)其中包括keys()
方法。
for(var i = 0, length = results.length; i< length; i++){
var object = results[i];
var tempArray = [object.get("city")];
if (cities.length > 0){
for (var i = 0; i < cities.length; i++){
if (cities[i].get("city") == object.get("city")) {
break;
} else if (i == cities.length-1) {
cities = cities.concat(tempArray);
}
}
}
}
function(parseResults) {
var cities = {};
var ii=0;
var nResults = parseResults.length
for(;ii<nResults;++ii) {
cities[result.get('city')] = 1
}
var citiesArray = cities.keys();
response.success(citiesArray);
}