要在Javascript中以特殊格式列出的字符串

时间:2013-07-17 06:14:58

标签: javascript jquery

我有一个字符串,其中包含逗号分隔的名称和可选值,这些值分隔了这样的值:

var str = "PowerOn:On,ValidLocation, temp:25";

我想将其转换为可以按名称访问值的对象或json:

var a = {"PowerOn":"On", "ValidLocation":"true", "temp":25};
var result = a.PowerOn;
alert(result);

OR

var a = {"PowerOn":"On", "ValidLocation":"true", "temp":25};
var result = a["PowerOn"];
alert(result);
  

注1:如果名称没有值,则默认为true。

更新

  

注2:如果列表中不存在名称,则其值为false:ex:

var a = {"PowerOn":"On", "ValidLocation":"true", "temp":25};
var result = a.Alarm 
//result must be false

2 个答案:

答案 0 :(得分:7)

var str = "PowerOn:On,ValidLocation, temp:25",
    arr = str.split(','),
    obj = {}

for (var i=0; i<arr.length; i++) {
    var parts = arr[i].split(':');
    obj[parts[0]] = parts[1] || true;
}

JSFIDDLE

答案 1 :(得分:1)

假设分隔符保持不变,这是否适合您:

var result = {}; 

"PowerOn:On,ValidLocation, temp:25".split(",").forEach(function(i) { 
           result[(i=i.split(":"))[0]]=i[1] || true; 
});

// result : {PowerOn: "On", ValidLocation: true,  temp: "25"}

对于问题的第二部分,请使用!!result.Alarm false