2012-05-07 16 views
0

JavaScriptを使用して地図を使用します。Javascriptを使用して地図

静的なデータを使用すると、予想される出力が得られる可能性があります。

var tempMap={91: "Live", 41: "Aggr-Pack", 92: "Test", 118: "Group", 115: "Inner Cartons", 122: "SNDC", 102: "Web Service", 82: "EXTERNAL_DEF", 137: "PARTIAL", 72: "Return", 112: "Kit Master Cartons", 46: "SHIP", 134: "VEHICLE_TYPE", 121: "SGTIN", 135: "VEHICLE_ID", 45: "DE-COM", 113: "Bulk Cartons ", 136: "VEHICLE_COLOR", 131: "CARRIER", 52: "Invoice Number", 101: "File", 114: "Product Master Cartons ", 81: "GLN", 42: "Kit", 53: "Shipping Number", 47: "RECEIVE", 111: "Pallet", 133: "SHIPMENT_TYPE", 71: "Sale", 43: "DIS", 116: "Kits", 21: "en", 123: "SSCC", 22: "es", 117: "Products", 44: "COM", 132: "EXPECTED_DELIVERY_DATE", 73: "Transfer", 51: "Purchase Order Number"}; 
var key=116; 
alert(tempMap[key]); 

レスポンスからダイナミックマップを作成したいと思います。

応答は、JavaScriptコードの下に使用tempMapデータで与えられるI応答を変更

"{91=Live, 41=Aggr-Pack, 92=Test, 118=Group, 115=Inner Cartons, 122=SNDC, 102=Web Service, 82=EXTERNAL_DEF, 137=PARTIAL, 72=Return, 112=Kit Master Cartons, 46=SHIP, 134=VEHICLE_TYPE, 121=SGTIN, 135=VEHICLE_ID, 45=DE-COM, 113=Bulk Cartons , 136=VEHICLE_COLOR, 131=CARRIER, 52=Invoice Number, 101=File, 114=Product Master Cartons , 81=GLN, 42=Kit, 53=Shipping Number, 47=RECEIVE, 111=Pallet, 133=SHIPMENT_TYPE, 71=Sale, 43=DIS, 116=Kits, 21=en, 123=SSCC, 22=es, 117=Products, 44=COM, 132=EXPECTED_DELIVERY_DATE, 73=Transfer, 51=Purchase Order Number}" 

あります。

var map=(str.replace(/=/gi,"\"= \"").replace(/,/gi,"\",\"").replace(/=/gi,":")); 
map="{\""+map.substring(2,(map.length)-1)+"\"}" 

しかし、キー値を渡すことで出力を取得できませんでした。私はこれを行うために他の第三者を使用したくない。

+0

あなたはどこから回答を得ますか?出力を制御する場合は、JSONなどのより優れたデータ形式を使用します。 –

答えて

1

あなたはほぼ正しいです。二

var map=(str.replace(/=/gi,"\"= \"").replace(/,\s*/gi,"\",\"").replace(/=/gi,":")); 
map="{\""+map.substring(2,(map.length)-1)+"\"}"; 

あなたがJSONをサポートしていないブラウザを扱っているのであればそれ以降のお

map = JSON.parse(map); 

または

map = eval("(" + map + ")"); 

を実行できるを置き換えるために空白文字を追加

2

あなたのレスポンスをJSONに変換するRegExが正しいと仮定すると(私はそれをテストしませんでした)、JSONパーサーを使用して渡す必要があります。あなたが以前に持っていたのは単なる文字列です。

map= JSON.parse("{\""+map.substring(2,(map.length)-1)+"\"}"); 
0

javascriptオブジェクトのソース文字列を評価するのは簡単ではないので、応答文字列を'{91=Live, 41=Aggr-Pack}'から'{"91": "Live", "41": "Aggr-Pack"}'に変換することに問題があると想定しました。

// this pattern matches each attribution and saves references to its left 
// and right sides; i.e: after match "41=Aggr-Pack", $2 is "41" and $3 is 
// "Aggr-Pack". 
var pat = /([\w -]+)=([\w -]+)/gi; 

// this uses the referenced matches to build another string; 
// i.e: '{91=Live, 41=Aggr-Pack}' -> '{"91": "Live", "41": "Aggr-Pack"}'; 
var tmp = str.replace(re, '"$2": "$3"'); 

// the following evaluates the string as a javascript object (you can also 
// use eval(tmp): 
var map = JSON.parse(tmp) 

私はそれがあなたの問題を解決することを願っています。

関連する問題