转换字符串数组为一个键值对对象

问题描述:

我正在一个输出它看起来像这样转换字符串数组为一个键值对对象

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

循环遍历数组,分割:字符处的值。然后在对象中使用第一部分作为属性名称,第二部分作为值。

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

假设你有一个对象,然后再创建此数组,您不需要将其转换为任何东西。使用jQuery的每个你可以得到的价值和关键。

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

如果这是最终输出,那么您可以在循环时使用String.prototype.split。

+3

这是一个数组,而不是一个目的。键将只是数组索引'0','1'等 – Barmar 2014-12-10 22:50:16

试试这个功能我已经测试了它

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

就撞上了这一点。这是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

更是最新的版本,使用一些较新的语言

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