0

我正在尝试使用基于另一个数组的值的 json obejct 的文本值填充数组

我的代码是:

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"]   
4

2 回答 2

3

如果 DemoOptions 像这样翻转:

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

您可以很容易地做到这一点,因为您只需要遍历OldArray一个并将相应的值(由 映射DemoOptions)推入NewArray. 由于可能有一个很好的理由你有它的另一种方式,你应该动态创建这个翻转的副本,然后填充你的新数组:

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]]);
于 2012-06-14T00:06:26.507 回答
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;
            }
        }
    }
}
于 2012-06-14T00:20:38.937 回答