在运行时更改对象属性名称

时间:2012-07-22 23:59:20

标签: javascript

假设我有一个像这样的对象数组:

 var nodes = [{"size":8,"name":"myName"},{"size":10,"name":"otherName"},{"size":11,"name":"userName"}];

如何创建包含从arr映射的对象的数组nodes,但属性具有不同的名称。假设我希望arr.r映射到每个size属性,所以:

thisSize = arr[0].r

应该{​​{1}}向8提供帮助。 希望我能清楚地解释我的问题。

2 个答案:

答案 0 :(得分:4)

如果您不担心支持Internet Explorer 8及更早版本,则可以使用属性或map,但我会假设您是。只需使用新对象迭代并构造一个新数组:

var arr = [];

for(var i = 0; i < nodes.length; i++) {
    var node = nodes[i];

    arr.push({
        r: node.size
    });
}

根据需要在对象push中映射您的属性。

答案 1 :(得分:-1)

    <script>
    function item(name,size){
      this.name = name;
      this.size = size;
    }

    var arr = [];
    arr[0] = new item("item 1",9);
    arr[1] = new item("item 2",14);

    alert("name: " + arr[0].name + " size:" + arr[0].size);
    alert("name: " + arr[1].name + " size:" + arr[1].size);
    </script>