0

REST サーバーからの戻りデータの一部として返されるオブジェクトがあります。これは item オブジェクトの一部です。

(REST サーバーを制御できないため、受信したデータを変更できません):

{
    "Option:Color":"Red,Green,Blue,Orange",
    "Option:Size":"Small,Medium,Large"
}

私が最終的にやりたいのは、アプリで製品が選択されたときに結果を表示できるように、これをある程度制御することです。モーダルで表示されます。私は Marionette/Backbone/Underscore/JQuery などを使用していますが、これは JavaScript に関する質問です。

データを取得する方法を複数試しましたが、成功しませんでした。ネストされた配列でオプションを使用できるようにしたいのですが、他の提案も受け付けています...

基本的にはこのような構造

var Color=('Red', 'Green', 'Blue', 'Orange')
var Size('Small', 'Medium', 'Large')

オブジェクト構造は問題ありません。それを配列に変換して「オプション」キーワードを取り出すことができる必要があるだけです。

私がそれらを受け取ったとき、さまざまなオプションが何であるかわからないことに言及することが重要です-オプションの少し後のビット: バリエーション、色、サイズ、フレーバーなどの任意の形式である可能性があります.

4

3 に答える 3

2

解析された JSON をループして、新しいオブジェクトに新しいキーを作成します。そうすれば、変数名を自分で作成する必要はありません。新しいオブジェクトのキーとしてではありますが、自動的に行われます。

var obj = {
  "Option:Color":"Red,Green,Blue,Orange",
  "Option:Size":"Small,Medium,Large"
}

function processObj() {
    var newObj = {};
    for (var k in obj) {
        var key = k.split(':')[1].toLowerCase();
        var values = obj[k].split(',');
        newObj[key] = values;
    }
    return newObj;
}

var processedObj = processObj(obj);
for (var k in processedObj) {
  console.log(k, processedObj[k])
  // color ["Red", "Green", "Blue", "Orange"], size ["Small", "Medium", "Large"]
}

編集:OP こことjsfiddleのコードを更新して、新しいオブジェクトをループしてキー/値を取得する方法を示しました。

フィドル

于 2013-11-14T11:14:27.343 に答える
1
var json  = {
             "Option:Color":"Red,Green,Blue,Orange",
             "Option:Size":"Small,Medium,Large"
            };
var color = json['Option:Color'].split(',');
var size  = json['Option:Size'].split(',');
于 2013-11-14T11:04:59.720 に答える