2017-03-05 129 views
0

給定以下具有鍵 - 值對的字符串,如何編寫通用函數以將其映射到對象?將鍵值對映射到對象的字符串

目前,我只是分裂:;以獲取相關數據,但它似乎不是一個乾淨的方法。

這是我的代碼的時刻:

var pd = `id:S76519;sku:S76519;name:StarGazer 3000;model:ICC74`; 
var tempPd = pd.split(';'); 
for (i = 1; i < tempPd.length; i++) { 
    var b = tempPd[i].split(':'); 
    console.log(b[1]); 
} 
+1

那麼你在做什麼是你可以做的唯一的事情。如果你有一個字符串,並且你想根據你期望找到的語法來提取信息,那麼你解析字符串並構建一個數據結構。 – Pointy

+2

如果你知道沒有;和:在鍵和值,那麼爲什麼不呢? – user489872

+0

你可以顯示你目前使用的代碼嗎?如果沒有看到你已有的東西,是否有更清晰的方法很難知道。 – StriplingWarrior

回答

1

怎麼樣使用減少:

function objectify(str) { 
 

 
\t return str.split(";").reduce(function (obj, item) { 
 
\t \t var a = item.split(":"); 
 
\t \t obj[a[0]] = a[1]; 
 
\t \t return obj; 
 
\t }, {}); 
 

 
} 
 

 
var strObj = "id:S76519;sku:S76519;name:StarGazer 3000;model:ICC74"; 
 
console.log(objectify(strObj));

或:

function objectify(str){ 
 

 
return str.split(";").reduce((obj,item)=>{ 
 
    var a = item.split(":"); 
 
    obj[a[0]]=a[1]; 
 
    return obj; 
 
},{}); 
 

 
} 
 
    
 
var strObj = "id:S76519;sku:S76519;name:StarGazer 3000;model:ICC74"; 
 
console.log(objectify(strObj));

+1

偉大工程。謝謝! – methuselah

相關問題