【问题标题】:How do I convert this object to an array in JavaScript?如何在 JavaScript 中将此对象转换为数组?
【发布时间】:2009-12-22 20:30:57
【问题描述】:

如何将testObj 转换为数组?

function MinEvent(event, width, left){
  this.start = event.start;
  this.end = event.end;
  this.width = width;
  this.top = event.start;
  this.left = left;
}

var testObj = {};
for (var j=0; j<eventLists.length; j++) {
  var eve = eventLists[j];
  var event = new MinEvent(eventList[j], width, left);
  testObj[eve.id] = event;
}

【问题讨论】:

  • 所有 JavaScript 对象基本上都是关联数组。您编写的代码应该可以工作(假设 new Event 应该是 new MinEvent 并且 eventLists 被初始化为正常的东西)。
  • 如果您希望testObj 成为一个真正的数组,您需要告诉我们您希望它的属性如何转换。如果你告诉我们你想用它做什么,也许会有所帮助?
  • 如果我没记错的话,如果我将 testObj 作为一个对象而不是一个真正的数组,我就不会知道它的长度。对吗?
  • @priyank.mp:对。但是,如果您只是将{} 切换到[],您也不能依赖.length:字符串键不会影响.length,而数字键只会将.length 提升到最高索引+1。换句话说,你应该回答@Douglas 的问题……
  • 获得 testObj 后,我将遍历每个元素,然后根据值生成一些 html 代码 - start、end、width、top 和 left。例如:
    测试
    。在生成 html 之前,我必须根据起始值(testObj[id].start)对这个数组进行排序。

标签: javascript arrays object


【解决方案1】:

从技术上讲,javascript 中的每个对象都可以被视为一个数组。您的代码应该按原样工作。

但是不管怎样,看看你的代码,为什么不把testObj定义为var testObj = [];呢?

【讨论】:

    【解决方案2】:

    如果您最初将testObj 声明为数组,则不需要对其进行转换。

    //declare the array
    var testObj = new Array();
    

    //declare the array
    var testObj = [];
    

    基于索引的访问应该适用于其中任何一个。即

    testObj[0] = "someval";
    

    等等

    【讨论】:

    • 大声笑为什么人们拒绝了这个问题的每一个答案,这超出了我的理解。它们都是有效的,包括我的。这是一个简单的 javascript 数组。这附近就像小学一样。哦我!我!我!我先举手了;)
    【解决方案3】:

    我不确定你为什么要这样做。 JavaScript 对象实际上已经与关联数组相同。您可以像这样访问它的所有属性和方法:

    for(prop in obj) {
        alert(prop + ” value : ”+ obj[prop];
    }
    

    如果您告诉我们在将对象转换为数组后您想要做什么(以及您希望结果看起来如何),这可能会有所帮助。

    【讨论】:

      【解决方案4】:
      var array = []
      for( var prop in testObj )
      {
          array.push( testObj[prop] );
      }
      

      这是你想要的吗?

      【讨论】:

        猜你喜欢
        • 2021-01-28
        • 2018-10-29
        • 1970-01-01
        • 1970-01-01
        • 2015-08-20
        • 2022-01-01
        • 1970-01-01
        • 2022-01-14
        相关资源
        最近更新 更多