2014-12-10 125 views
4

我正在一個輸出它看起來像這樣轉換字符串數組爲一個鍵值對對象

var x = ["title: x_one", " description: 1", " value: 4"] 

其中x[0]返回title: x_one

它是一個字符串。我不能讀取所有權的財產。我將如何將其轉換爲對象,以便最終能夠遍歷數組並讀取諸如標題,描述和值等屬性。

我試圖通過jquery的

我一直在尋找一個解決方案來做到這一點,但還沒有真正找到一個。如果有任何我失蹤的地方,我將非常感激,如果其他人有,並可以指向我

+0

你在哪裏從輸出?它看起來應該是JSON,但它的格式不正確。 – LavaSlider 2014-12-10 22:46:28

+1

使用'split(':')'將該值拆分爲屬性名稱和值。 – Barmar 2014-12-10 22:47:24

+0

以及我正在從我們的朋友的輸出谷歌 https://spreadsheets.google.com/feeds/list/1hAJKYmNsDym6DIQkhZAH8PBtMYndzu9yCLZ1bp_VKCo/od6/public/basic?gid=0&single=true&hl=en_US&alt=json – soum 2014-12-10 22:49:02

回答

10

循環遍歷數組,分割:字符處的值。然後在對象中使用第一部分作爲屬性名稱,第二部分作爲值。

var obj = {}; 
for (var i = 0; i < x.length; i++) { 
    var split = x[i].split(':'); 
    obj[split[0].trim()] = split[1].trim(); 
} 
+1

感謝man..you回答了我以前的幾個問題,這些都是正確的:-)。感謝您的幫助和幫助理解概念 – soum 2014-12-10 23:01:14

0

假設你有一個對象,然後再創建此數組,您不需要將其轉換爲任何東西。使用jQuery的每個你可以得到的價值和關鍵。

$.each(obj, function(key, value) { 
    alert(key + ": " + value); 
}); 

如果這是最終輸出,那麼您可以在循環時使用String.prototype.split。

+3

這是一個數組,而不是一個目的。鍵將只是數組索引'0','1'等 – Barmar 2014-12-10 22:50:16

2

試試這個功能我已經測試了它

var a=new Array(); 
    for(var i=0;i<x.length;i++){ 
    var tmp=x[i].split(":") 
    a[tmp[0]]=tmp[1] 
    } 
+1

除了不適當使用'new Array()',這與我的答案完全相同。 – Barmar 2014-12-10 22:55:49

0

就撞上了這一點。這是OP原創陣列的另一個解決方案。

var x = ["title: x_one", " description: 1", " value: 4"] 


function mapper(str) 
{ 
    var o = {}; 
    strArr = str.split(":"); 
    o[strArr[0].trim()] = strArr[1].trim(); 
    return o; 
} 


var resultArray = x.map(mapper); 
console.log(resultArray[0].title); 
console.log(resultArray[1].description); 
console.log(resultArray[2].value); 

fiddle

1

更是最新的版本,使用一些較新的語言

const splitStr = (x) => { 
    const y = x.split(':'); 
    return {[y[0].trim()]: y[1].trim()};  
} 

const objects = ["title: x_one", " description: 1", " value: 4"].map(splitStr) 

console.log(objects) 
+0

良好的使用Lambda(MOZ - 數組函數)功能。雖然新手和一些中級可能會因爲Pro's&Con的使用而在沒有其他語言的豐富知識和經驗的情況下被誤用,即使對於JS/JQ – GoldBishop 2017-01-18 13:50:24

相關問題