我有一个字符串,其中包含逗号分隔的名称和可选值,这些值分隔了这样的值:
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
答案 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;
}
答案 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
。