2014-11-15 18 views
-2

有一個面試問題(JavaScript)的其中我的朋友,我無法去解決它很長一段時間,所以想詢問這裏,轉換或解析字符串JSON對象

Question: 
String: 
2014<18.3,11.4,12.1,19.5,1000&&11.2,34.5,67.1,18,20000>name=sample,position=engineer,company=abc 

和最終reult應用以下格式作爲JSON對象。任何人都可以請幫忙解決這個問題。

Output: 
{[ 
    {"Proposal":"2014"}, 
    {"values":"[18.3,11.4,12.1,19.5],[11.2,34.5,67.1,18]"}, 
    {"Items":"[1000,20000]"}, 
    {"name":"sample"}, 
    {"position":"engineer"}, 
    {"company":"abc"}, 
]} 

請期待解決方案和解釋。

感謝, Basky

+0

@downvote:能否請您讓我知道你爲什麼downvote的問題? – Basky

+1

你的嘗試在哪裏?這看起來更像是一項家庭作業,你期望人們編寫代碼 – charlietfl

回答

1

這裏是您的解決方案。

  1. 輸入字符串應該有所有的參數,如果下面的任何參數丟失,代碼將會中斷。
  2. 邏輯是動態的,可以支持任意數量的數值,最後一位數字將被視爲項目。
  3. 邏輯還支持輸入字符串中的n個鍵/值對。

檢查下面的代碼在控制檯。

var JsonOutput = []; 
var sRawInput = "2014<18.3,11.4,12.1,19.5,1000&&11.2,34.5,67.1,18,20000>name=sample,position=engineer,company=abc"; 

JsonOutput.push({ "Proposal" : sRawInput.split("<")[0] }); 

var oValues = sRawInput.split("<")[1].split(">")[0].split("&&"); 
var oActualValues = []; 
var oActualItems = []; 

$(oValues).each(function(Ind, Val){ 
    oActualValues.push(Val.split(",").slice(0, Val.split(",").length - 1).join()); 
    oActualItems.push(Val.split(",")[Val.split(",").length - 1]); 
}); 

JsonOutput.push({ "Values" : oActualValues }); 
JsonOutput.push({ "Items" : oActualItems }); 

var OtherValues = sRawInput.split(">")[1].split(","); 

$(OtherValues).each(function(Ind, Val){ 
    JsonOutput.push(JSON.parse("{\"" + Val.split("=")[0] + "\":\"" + Val.split("=")[1] + "\"}")); 
}); 

console.log(JsonOutput); 
console.log(JSON.stringify(JsonOutput)); 
0

注: 值是不正確,因爲它應該含有2個陣列而不是一個單個陣列。

項目不正確,因爲它應該包含數字而不是字符串。

而且外面的包裝應該是一個OBJ {}

+0

這應該是一個評論 –

+0

你可以改善你的答案多一點嗎? –