dojo .map()不是函数Map动态创建的对象时出错

mm5n2pyu  于 2022-12-16  发布在  Dojo
关注(0)|答案(4)|浏览(173)

我正在尝试将动态创建的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()是无效的。为什么会这样?我该如何修复它?

brjng4g3

brjng4g31#

Look at the documentation for dojo.toJson
该方法将对象转换为JSON格式的string

字符串没有方法Map

既然变量中已经有了对象数组(不是params.junctionBarriers),为什么不简单地执行junctionBarriers.map

qni6mghb

qni6mghb2#

实际上**dojo.toJson()JSON.stringify()**是一样的,它在这里把你的array转换成JSON string,所以问题是你试图在string上调用.map()
这就是为什么你得到了错误:
params.junctionBarriers.map 不是函数
因此,在将object转换为JSON string之前,需要进行.map()调用。

vsmadaxz

vsmadaxz3#

不要使用console.log()检查数组,您有一个名为Array.isArray(myArray)的方法,该方法返回truefalse,这取决于您的变量是否为数组。
实际上你把你的junctionBarriers转换成一个字符串,所以params.junctionBarriers是一个字符串,你不能对一个字符串做.map()
请始终查看文档:

nlejzf6q

nlejzf6q4#

  • 选项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;
      })

相关问题