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

时间:2014-12-10 22:44:24

标签: javascript jquery

我得到的输出看起来像这样

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

其中x[0]返回title: x_one

这是一个字符串。我无法阅读标题的属性。我如何将其转换为对象,以便最终我能够遍历数组并读取标题,描述和值等属性。

我试图通过jquery

来做到这一点

我一直在寻找解决方案,但还没找到。如果有任何我遗失的东西,我将非常感谢,如果有其他人拥有并且可以指出我那个

5 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:2)

尝试此功能我已经测试过了

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

答案 2 :(得分: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)

答案 3 :(得分:0)

假设您在创建此阵列之前有一个对象,则不需要将其转换为任何对象。使用jQuery,你可以获得价值和关键。

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

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

答案 4 :(得分: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