【问题标题】:Appending to an object - javascript附加到对象 - javascript
【发布时间】:2015-11-21 00:54:59
【问题描述】:

如果我执行以下操作,

var array = [];
array['foo'] = [];
console.log(array.length)   // => 0

console.log 打印 0 长度。

有没有办法在 javascript 中将键值推送到数组?一般来说,这是一个坏主意吗?我需要自己更新长度吗?

可以选择使用此处推荐的括号表示法 (SO - JavaScript Array Push key value)。

但稍后在代码中我想推送到对象/数组,因此建议再次使用数组 (SO - Appending to an object)。

所以我不太确定要使用哪种数据结构。对于我的任务,我想我需要键值。它是一个异步任务,我不能依赖未命名数组中的顺序。但从我目前阅读的内容来看,附加到对象似乎也是一种黑客攻击。

【问题讨论】:

  • length 只计算数值数组元素,不计算命名属性。
  • 通常命名的属性用于对象,而数组只有数字索引。你为什么要把属性放在一个数组上?
  • For my task I guess I need key-values. 然后使用一个对象。否则,您需要扩展您的问题,向我们展示您到底想要做什么。
  • @Bamar 数据是异步填充的,所以我认为这是以后访问正确值的更好方法。
  • 您应该将其用作 key-value 的对象;检查长度(道具数量)检查jsfiddle.net/maio/k8wz7862

标签: javascript arrays


【解决方案1】:

你可以推送一个对象:

var arr = [];
var obj = {foo: "bar"};
arr.push(obj);
arr.length; //1
arr[0].foo; //"bar"

【讨论】:

    【解决方案2】:

    您可能应该使用 javascript object,它充当键/值对数据结构(如 HashMapDictionary)。

    var data = {
      key: 'value'
    }
    
    data['key'] // 'value'
    Object.keys(data).length // 1
    

    为了你未来的自己,你不应该给数组添加属性,也不要试图用一个对象来模拟一个数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      • 2010-10-11
      • 2015-11-24
      • 1970-01-01
      相关资源
      最近更新 更多