我正在尝试将动态创建的ObjectMap到Array,如下所示
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()
是无效的。为什么会这样?我该如何修复它?
4条答案
按热度按时间brjng4g31#
Look at the documentation for dojo.toJson
该方法将对象转换为JSON格式的string。
字符串没有方法Map。
既然变量中已经有了对象数组(不是params.junctionBarriers),为什么不简单地执行
junctionBarriers.map
?qni6mghb2#
实际上**
dojo.toJson()
和JSON.stringify()
**是一样的,它在这里把你的array
转换成JSONstring
,所以问题是你试图在string
上调用.map()
。这就是为什么你得到了错误:
params.junctionBarriers.map 不是函数
因此,在将
object
转换为JSONstring
之前,需要进行.map()
调用。vsmadaxz3#
不要使用
console.log()
检查数组,您有一个名为Array.isArray(myArray)
的方法,该方法返回true
或false
,这取决于您的变量是否为数组。实际上你把你的
junctionBarriers
转换成一个字符串,所以params.junctionBarriers
是一个字符串,你不能对一个字符串做.map()
。请始终查看文档:
nlejzf6q4#