5

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

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

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

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

或者

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

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

更新:

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

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

2 回答 2

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

于 2013-07-17T06:18:00.917 回答
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.Alarmwhich should be false

于 2013-07-17T06:21:46.217 回答