2014-03-04 75 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