不使用 eval 迭代 json 对象?

发布于 2024-09-11 15:11:54 字数 361 浏览 2 评论 0原文

抱歉,这可能是一个重复的问题,但是如何在不使用 eval() 的情况下迭代另一个对象内的 Javascript 列表?

请参阅下面大写字母中的伪代码:

polygon = polygon['coordinates']; //list object
var polygon = new CM.Polygon([
   FOR POLY IN POLYGON {
       new CM.LatLng(poly[1], poly[0]),
}
]);

显然,我不希望 CM.Polygon 对象(CloudMade 地图对象)内有真正的 for 循环,我想要的只是依次输出列表中的每个 LatLng。

谢谢!

Sorry, this is probably a duplicate question, but how can I iterate over a list in Javascript inside another object without using eval()?

See pseudocode in CAPITALS below:

polygon = polygon['coordinates']; //list object
var polygon = new CM.Polygon([
   FOR POLY IN POLYGON {
       new CM.LatLng(poly[1], poly[0]),
}
]);

Obviously, I don't want a real for-loop inside the CM.Polygon object (a CloudMade map object), what I want is simply to output each LatLng in the list in turn.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

薄凉少年不暖心 2024-09-18 15:11:54

为什么不想使用真正的 for 循环?我的建议是使用自动执行函数,例如:

polygon = polygon['coordinates']; //list object
var polygon = new CM.Polygon(
  (function(){
    var oput = [], x, y;
    for ( x=0,y=polygon.length ; x<y ; x++){
      oput.push(new CM.LatLng(polygon[x][1],polygon[x][0]));
    }
    return oput;
  }())
);

Why don't you want to use a real for loop? My suggestion would be to use a self-executing function eg:

polygon = polygon['coordinates']; //list object
var polygon = new CM.Polygon(
  (function(){
    var oput = [], x, y;
    for ( x=0,y=polygon.length ; x<y ; x++){
      oput.push(new CM.LatLng(polygon[x][1],polygon[x][0]));
    }
    return oput;
  }())
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文