2016-10-24 14 views
0

私は外部のJSONファイルから作成された観測可能な配列からデータを取り出すためにforeachを作成しようとしています。何らかの理由で、JSONファイルを提供するプログラムの開発者は、「ネットワークデバイス」などの文字列名のいくつかにスペースを使用することに決めました。ノックアウトは、\ sを追加したり引用符で囲んでも、空白に問題があるようです。また、キーのインデックス値によってforeachを作成する方法がないようです。 foreachに空白を追加する方法、または配列内の問題のある値の名前を変更する方法はありますか?名前にスペースを持つキーでforeachを作成するにはどうすればよいですか?

私のforeachコードは<!-- ko foreach: Network Devices -->で始まり、$index[12]といくつかの他の識別子も運行なしで試しました。

+0

あなたが試したいくつかのコードを追加していただけますか?読みやすいようにエディタで正しくフォーマットしてください。 –

答えて

0

おそらく、単にいくつかのバニラはJavaScriptを使用します。

var json = { 
    "Network Devices": "yes", 
    "Computer": ["keyboard", "mouse", "processor"], 
    "Types of fruits": ["Apple", "Orange", "Banana"] 
}; 
for (var key in json) { 
    var obj = json[key]; 
    console.log(key,obj); 
} 

今、あなたは、オブジェクトのちょうどその部分を操作するためobjにアクセスすることができます。

loop through javascript object

あなたは、あなたが通過して、彼らはスペースを含めることはできませんので、すべてのキーをエンコードすることができなければならない場合。これは、時間が来ると、キーを解読するために"Network%20Devices"

var json = { 
    "Network Devices": "yes", 
    "Computer": ["keyboard", "mouse", "processor"], 
    "Types of fruits": ["Apple", "Orange", "Banana"] 
}; 
var new_object = {}; 
for (var key in json) { 
    new_object[encodeURIComponent(key)] = json[key]; 
} 
console.log(new_object); 

"Network Devices"を変更decodeURIComponent(key)

使用するか、またはあなただけのアンダースコアとスペースを置き換えることができます:"Network_Devices"

var new_object = {}; 
for (var key in json) { 
    new_object[key.replace(' ','_')] = json[key]; 
} 
console.log(new_object); 
0

は、ブラケット表記を使用しますあなたのデータバインドで。現在のバインディングコンテキストを参照するために$dataを使用します。

var myData = { 
 
    "Weird Key": [1,2,3] 
 
}; 
 

 
ko.applyBindings(myData);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 

 
<!-- ko foreach: $data['Weird Key'] --> 
 

 
    <div data-bind="text: $data"></div> 
 

 
<!-- /ko -->

関連する問題