0

別の配列の値に基づいて、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"]   
4

2 に答える 2

3

DemoOptionsが次のように反転した場合:

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

これは非常に簡単に行うことができます。これは、OldArray1つを繰り返し処理し、それぞれの値(によってマップされる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 に答える