动态变量键值对数组

时间:2014-03-04 00:47:13

标签: javascript

有没有办法动态分配数组?代码无法按预期工作。它在var p = { z }

处失败
var z = "\"" + m[0] + "\"" + " : " + "\"" + (m[0] = m[1]) + "\"";

if(i != u.length - 1){
  z = z + ",";
}

var p = {z}

for (var key in p) {
  if (p.hasOwnProperty(key)) {
    client = Elements.AddNew(key, p[key]);
    client.Update();
  }
}   

整个代码

var fso, f1, ts, s;
        var ForReading = 1;
        fso = new ActiveXObject("Scripting.FileSystemObject");
        // Read the contents of the file.
        Session.Output("Reading file");
        ts = fso.OpenTextFile("c:\\temp\\roles.txt", ForReading);
        s = ts.ReadAll();
        u = s.split('\r\n');
        Session.Output(u);
        for(i = 0; i < u.length; i++){
        m = u[i].split(",");
        var z = "\"" + m[0] + "\"" + " : " + "\"" + (m[0] = m[1]) + "\"";

            if(i != u.length - 1){
                z = z + ",";
            }

                    var p = {
                        z
                    }
                    Session.Output(p);

        for (var key in p) 
        {
            if (p.hasOwnProperty(key))
            {
            client = Elements.AddNew(key, p[key]);
            client.Update();
            }
        }   


        }

该文件的内容如下。这是逗号分隔的文件。

abc,1
def,2
ghi,3

2 个答案:

答案 0 :(得分:1)

你无法创建这样的对象。

您需要使用bracket notation作为member operator才能执行此操作

var p = {}

p[m[0]] = m[1];


for (var key in p) {
    if (p.hasOwnProperty(key)) {
        client = Elements.AddNew(key, p[key]);
        client.Update();
    }
}

答案 1 :(得分:1)

我会假设:

(m[0] = m[1]) 

应该是:

(m[0] == m[1]) 

如果你有一个数组 m ,就像:

var m = ['a', 'b', 'b'];

您似乎正在尝试使用该模式制作对象:

var z = { m[0] : (m[0] == m[1]) };

可写:

var z = {};
z[m[0]] = m[0] == m[1];

可以使用以下命令从数组创建对象:

var z = {};
for (var i=0, iLen=m.length - 1; i<iLen; i++) {
  z[m[i]] = m[i] == m[i+1];
} 

这会创建一个像这样的对象:

{a: false, b: true}