2012-06-14 150 views
0

我試圖用另一基於陣列的斷值的JSON obejct的文本值數組填充數組與JSON對象的值

我的代碼是:

var DemoOptions = { 
    "One" : 1, 
    "Two" : 2, 
    "Three" : 3, 
    "Four" : 4, 
    "Five" : 5 
}; 

var OldArray = [1,3,5]; 
var NewArray = []; 


$.each(OldArray,function(x, item){ 
    NewArray.push(DemoOptions.item); 
}); 

NewArray現在應該是:

NewArray ["One", "Three", "Five"] 

回答

3

如果DemoOptions被翻轉,如:

var DemoOptions = { 
    1: "One", 
    2: "Two", 
    3: "Three", 
    4: "Four", 
    5: "Five" 
}; 

您可以非常輕鬆地完成此操作,因爲您只需遍歷OldArray one,並將相應的值(由DemoOptions映射)轉換爲即可。因爲有可能是一個很好的理由,你有它的其他方式,你應該創建這個動態翻轉副本,然後填寫您的新的數組:

var DemoOptions = { 
    "One" : 1, 
    "Two" : 2, 
    "Three" : 3, 
    "Four" : 4, 
    "Five" : 5 
}; 

var OldArray = [1,3,5]; 


var flipped = {}; 
for(var key in DemoOptions) 
    flipped[DemoOptions[key]] = key; 

var NewArray = []; 
for(var i = 0; i < OldArray.length; i++) 
    NewArray.push(flipped[OldArray[i]]); 
1

太糟糕DemoOptions不是由數值,而不是由索引字符串值。無論如何,這個怎麼樣:

for (var index in OldArray) { 
    var value = OldArray[index]; 

    for (var demoString in DemoOptions) { 
     if (DemoOptions.hasOwnProperty(demoString)) { 
      var demoValue = DemoOptions[demoString]; 
      if (value == demoValue) { 
       NewArray.push(demoString); 
       break; 
      } 
     } 
    } 
}