.map() 不是函数映射动态创建的对象时出错
.map() is not a function Error on Mapping Dynamically created Object
我正在尝试将动态创建的对象映射到这样的数组
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 is not a function
正如您从图像中看到的那样,params.junctionBarriers
是动态加载的,但 .map()
无效。为什么会这样,我该如何解决?
Look at the documentation for dojo.toJson
该方法将对象转换为 字符串 JSON 格式。
一个字符串没有方法映射。
那你为什么不简单地做 junctionBarriers.map
?鉴于您已经在该变量中拥有对象数组(不是 params.junctionBarriers)
实际上是 dojo.toJson()
is the same as JSON.stringify()
,它在这里将您的 array
转换为 JSON string
。所以问题是你试图在 string
.
上调用 .map()
这就是您收到错误的原因:
params.junctionBarriers.map is not a function
因此,在将 object
转换为 JSON string
.
之前,您需要进行 .map()
调用
- 选项 1:不使用 dojo.ToJson。
选项 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;
})
不要检查带有 console.log()
的数组 你有一个名为 Array.isArray(myArray)
的方法 returns true
或 false
取决于你的变量是数组与否。
实际上,您将 junctionBarriers
转换为字符串,因此 params.junctionBarriers
是一个字符串,您不能将 .map()
转换为字符串。
尽量查看文档:
我正在尝试将动态创建的对象映射到这样的数组
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 is not a function
正如您从图像中看到的那样,params.junctionBarriers
是动态加载的,但 .map()
无效。为什么会这样,我该如何解决?
Look at the documentation for dojo.toJson
该方法将对象转换为 字符串 JSON 格式。
一个字符串没有方法映射。
那你为什么不简单地做 junctionBarriers.map
?鉴于您已经在该变量中拥有对象数组(不是 params.junctionBarriers)
实际上是 dojo.toJson()
is the same as JSON.stringify()
,它在这里将您的 array
转换为 JSON string
。所以问题是你试图在 string
.
.map()
这就是您收到错误的原因:
params.junctionBarriers.map is not a function
因此,在将 object
转换为 JSON string
.
.map()
调用
- 选项 1:不使用 dojo.ToJson。
选项 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; })
不要检查带有 console.log()
的数组 你有一个名为 Array.isArray(myArray)
的方法 returns true
或 false
取决于你的变量是数组与否。
实际上,您将 junctionBarriers
转换为字符串,因此 params.junctionBarriers
是一个字符串,您不能将 .map()
转换为字符串。
尽量查看文档: