将数组转换为对象数组

时间:2015-09-03 00:13:30

标签: javascript arrays object

如何使用键

打开此数组
> dd
[ 'DeviceName',
  'counter1',
  'counter2',
  'counter3',
  'counter4' ]

进入带有对象的对象数组

[
    { data: 'DeviceName' },
    { data: 'counter1' },
    { data: 'counter2' },
    { data: 'counter3' },
    { data: 'counter4' }
]

我已经尝试过这个功能,但问题是数据键在它们中都是相同的。

有解决方法吗?

 newdd=function toObject(arr) {
      var rv = {};
      var a =[];
        for (var i = 0; i < arr.length; ++i) {
        rv["data"] = arr[i];
        a.push(rv);
        }
      return a;
    }

这给了我:

> newdd(dd)
[ { data: 'counter4' },
  { data: 'counter4' },
  { data: 'counter4' },
  { data: 'counter4' },
  { data: 'counter4' } ]

3 个答案:

答案 0 :(得分:5)

Array.prototype.map()

Configuration Properties -> C/C++

答案 1 :(得分:4)

这是因为JavaScript中的对象是passed by reference(或非常call by sharing),而不是值,因此您始终引用相同的对象。

只需在var distinctById = from o in query group o by o.Id into uniqueIds select uniqueIds.FirstOrDefault(); 循环内移动rv = {}的作业即可解决问题。将for重新分配给新对象而不是修改现有实例将导致所需的行为。

rv

请参阅Mozilla开发人员网络上的Working with objects,以帮助您了解对象。

答案 2 :(得分:2)

请改为尝试:

while True:
    userInput = raw_input("Data > ")
    DB = open('Database.txt', 'a')
    if userInput == "Undo":
        ""Delete last line command here""
    else:
        DB.write(userInput)
        DB.close()