首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在javascript中从字符串中提取带有'=‘的变量的最佳方法是什么

在javascript中从字符串中提取带有'=‘的变量的最佳方法是什么
EN

Stack Overflow用户
提问于 2018-10-11 02:55:13
回答 4查看 1K关注 0票数 0

我想从一个字符串中提取变量名,如下所示:"foo=valor bar=second"等等。

返回:

代码语言:javascript
复制
{ 
   foo: "valor", 
   bar: "second",
   ...
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-10-11 03:00:35

可以使用Regex Look Aheads检查前面是否有=符号的变量名

代码语言:javascript
复制
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);

票数 2
EN

Stack Overflow用户

发布于 2018-10-11 03:13:15

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2018-10-11 03:17:40

与前一个答案不同的方法:您可以在空格上拆分字符串,然后映射结果数组,在等号上拆分以创建您的对象(左侧是属性,右侧是值)

如果您需要它,您可以减少它,将数组转换为一个包含所有值的大对象

代码语言:javascript
复制
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;
   }));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52747011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档