如何按数组元素的顺序从数组创建Object

时间:2017-09-07 21:25:57

标签: javascript arrays object dictionary

我想创建一个简单的对象。

示例:{house:' house,cat:' cat',dog:' dog',45:45}

然而,javascript总是采用我的数组中的数字

示例:45 - 45:45

并将其放在我对象的顶部/前面。

问题1:为什么会发生这种情况?

问题2:如何按照数组中的顺序创建包含项目的对象(是的我知道它们放在一个物体中的方式并不重要,因为它们都有钥匙,但请帮忙。

let jakesLife = [
    'house',
    'cat',
    'dog',
    45
    ]
function x () {
    let obj = {};
    for (let i = 0; i < jakesLife.length; i++) {
        obj[jakesLife[i]] = jakesLife[i];
    }
    return obj;
}
x()

1 个答案:

答案 0 :(得分:1)

对象是无序的。这就是为什么我们有阵列。您订购的密钥列表应足以在您需要时获得有序访问。

如果您经常需要,可以创建一个处理此对象的对象类型。

let jakesLife = [
  'house',
  'cat',
  'dog',
  45
]

class Ordered {
  constructor(arr) {
    this.__keys = arr;
    arr.forEach(k => this[k] = k)
  }
  
  each(callback) {
    this.__keys.forEach(k => callback(this[k], k))
  }
}

var o = new Ordered(jakesLife);
o.each(v => console.log(v));