2014-03-04 76 views
0

有一种动态分配一个数组?代码无法按预期工作。它未能在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 
+0

如果'(m [0] = m [1])是'(m [0] == m [1])'?我在这里做一个任务没有任何意义。 – RobG

回答

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

谢谢。我尝试过,但只要碰到'client = Elements.AddNew(key,p [key]);',它就会返回'invalid type'消息。 – PeanutsMonkey

+0

为什么不使用VAR P = JSON.parse(Z) – clancer

+0

@clancer的时候有这样一个更清洁,这样做,为什么你要的东西 –

1

我假设:

(m[0] = m[1]) 

应该是:

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

如果你有一个阵列就是喜欢:

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} 
+0

我已经更新了整个代码的帖子,以显示我想要实现的目标。 – PeanutsMonkey