我想从一个字符串中提取变量名,如下所示:"foo=valor bar=second"
等等。
返回:
{
foo: "valor",
bar: "second",
...
}
发布于 2018-10-11 03:00:35
可以使用Regex Look Aheads检查前面是否有=
符号的变量名
var str = "foo=valor bar=second";
var varRegex = /\w+(?=(\s)*(\=))/g;
var valueRegex = /(?<=(\=)[\s'"]*)\w+/g;
var varArr = str.match(varRegex);
var valueArr = str.match(valueRegex);
console.log(valueArr);
let obj = {};
for(let i in varArr) {
obj[varArr[i]] = valueArr[i];
}
console.log(obj);
发布于 2018-10-11 03:13:15
var str = "foo=valor,bar=second";
var obj = {};
str.split(",").forEach(
function(item){
if(item){
var vars = item.split("=");
obj[vars[0]] = vars[1]
}
});
console.log(obj)
发布于 2018-10-11 03:17:40
与前一个答案不同的方法:您可以在空格上拆分字符串,然后映射结果数组,在等号上拆分以创建您的对象(左侧是属性,右侧是值)
如果您需要它,您可以减少它,将数组转换为一个包含所有值的大对象
let a = "foo=valor bar=second"
console.log(a.split(' ').map((i,v) => { return JSON.parse(`{"${i.split('=')[0]}": "${i.split('=')[1]}"}`);}))
let b = a.split(' ').map((i,v) => { return JSON.parse(`{"${i.split('=')[0]}": "${i.split('=')[1]}"}`);})
console.log(b.reduce(function(acc, x) {
for (var key in x) acc[key] = x[key];
return acc;
}));
https://stackoverflow.com/questions/52747011
复制相似问题