我正在尝试将动态创建的对象映射到像这样的数组
params.junctionBarriers = dojo.toJson(junctionBarriers);
// printing the object in the console (Please look at attached image)
console.log(params.junctionBarriers);
var value = [];
var data = params.junctionBarriers.map(function (s) {
value.push(webMercatorUtils.xyToLngLat(s.x, s.y, true));
return s;
})
但我收到此错误
params.junctionBarriers.map不是函数
正如您从图片中看到的那样,params.junctionBarriers
是动态加载的,但.map()
无效?!能告诉我为什么以及如何解决这个问题?
答案 0 :(得分:3)
Look at the documentation for dojo.toJson
该方法将对象转换为JSON格式的字符串。
字符串没有方法地图。
那你为什么不单独做junctionBarriers.map
?鉴于你已经拥有该变量中的对象数组(这不是params.junctionBarriers)
答案 1 :(得分:2)
实际上 dojo.toJson()
与 JSON.stringify()
相同,后者正在将您的array
转换为JSON string
这里。问题是您尝试在.map()
上致电string
。
这就是你收到错误的原因:
params.junctionBarriers.map不是函数
因此,在将.map()
转换为JSON object
之前,您需要进行string
来电。
答案 2 :(得分:1)
选项2:如果由于某种原因需要将对象转换为JSON字符串,则需要在使用.map之前将其解析回对象
// Option 1 params.junctionBarriers = junctionBarriers;
// Option 2 params.junctionBarriers = JSON.parse(params.junctionBarriers);
// printing the object in the console (Please look at attached image)
console.log(params.junctionBarriers);
var value = [];
var data = params.junctionBarriers.map(function (s) {
value.push(webMercatorUtils.xyToLngLat(s.x, s.y, true));
return s;
})
答案 3 :(得分:1)
不要检查带有console.log()
的数组,你有一个名为Array.isArray(myArray)
的方法会返回true
或false
,具体取决于你的变量是否为数组。
实际上,您将junctionBarriers
转换为字符串,因此params.junctionBarriers
是一个字符串,而您无法对字符串执行.map()
。
尝试始终查看文档: