JavaScript。如何解析一串变量并将其转换为具有属性的对象

标签 javascript arrays object foreach

我正在尝试用一系列内联变量解析 JS 中的字符串。目标是将这些变量转换为具有名称值对的对象。

示例:

  var hwStr = "color=blue+coreCnt=4+shell=aluminum+wireless=false";

我知道我可以解析原始字符串以获得一个名称值对数组,如下所示:

varArr = hwStr.split("+");

当我打印该数组时,我会得到:

>color=blue,
>coreCnt=4,
>shell=aluminum,
>wireless=false

为了手动创建这个对象,它看起来像:

var hwSpec = {color: 'blue', coreCnt: 4, shell: 'aluminum', wireless: false};

我的问题是,如何使用 foreach 语句创建一个将这些作为名称值对的对象。

公平地说,JS 不是我的语言,但我知道我应该知道这一点......这可能是一个菜鸟问题,任何帮助都会很棒。

Gary C 又名 UnKulMunki

最佳答案

拆分加号后,您可以 .reduce()处理每个 key=value 对并添加到对象的结果数组:

var hwStr = "color=blue+coreCnt=4+shell=aluminum+wireless=false";

var obj = hwStr.split("+").reduce(function(o, item) {
  item = item.split("=");
  o[item[0]] = item[1];
  return o;
}, {});

console.log(obj);

这与使用 .forEach() 类似,只不过不是在调用 .forEach() 之前在变量中创建空对象,而是将空对象作为.reduce() 的参数。对于这个特定问题,它没有太大区别,但在某些情况下 .reduce() 使您不必创建临时工作变量。

编辑:请注意,我的代码将所有属性值创建为字符串 - 我认为没有任何方法可以知道 false 是否应被视为 bool 值 false 或字符串“false”,除非您想假设所有可以解析为 bool 值或数字的值应该被视为 bool 值或数字.

关于JavaScript。如何解析一串变量并将其转换为具有属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42309774/

相关文章:

javascript - 模拟 Javascript 面向对象编程 Stoyan Stefanov 书中的字符串 split()

Java:使用文件读取器在 while 循环中添加到字符串数组

c++ - 静态成员对象初始化

c# - 启用/禁用 MVC 项目中的链接

javascript - CSS transition 不同的行为取决于浏览器类型

c - 获取子矩阵中不同元素的数量

c++ - 在构造函数中初始化变量

javascript - 比较两个对象,同时过滤掉特定的键

javascript - 我的 if else 语句中的变量数字没有更新

javascript - 使用 jQuery/JS 从 div 获取所有颜色