JavaScript:生成的对象内部包含多个对象->一个对象

时间:2018-09-17 12:12:14

标签: javascript javascript-objects

这是我的对象的样子:
this is how my object looks like,但我只需要一个像

obj = {
       var: "DB3,B0",
       zahl: "DB3,Int2",
       zahl2: "DB3,Int4",
       ...
       ...
      };

如何转换? 我尝试了不同的方法,但是在for循环中都无法使用。 我从带有以下代码的字符串生成对象:

var text = msg.payload;
var nt = text.split(" ");
var n = nt.length;
var add = [];
var name = [];
var ab = [];
var variables = {};



for (var i = 0; i < n; i++) {

    ab[i] = nt[i].split(";");
    add[i] = ab[i][0];    
    name[i] = ab[i][1];
    variables[i] = {[name[i]] : add[i]};
}




msg.payloadvars = variables;
return msg;

我认为这应该很简单,但是我没有任何解决方案。

输入看起来像

DB3,B0;var DB3,Int2;zahl DB3,Int4;zahl2 DB3,Int6;zahl3 DB3,Int8;zahl4 
DB3,Int10;zahl5 .....

3 个答案:

答案 0 :(得分:1)

您可以将字符串分成几组,然后分为值和键。

var string = 'DB3,B0;var DB3,Int2;zahl DB3,Int4;zahl2 DB3,Int6;zahl3 DB3,Int8;zahl4 DB3,Int10;zahl5',
   target = Object.assign(
       ...string.split(' ').map(s => (([v, k]) => ({ [k]: v }))(s.split(';')))
    );
   
console.log(target);

答案 1 :(得分:0)

如果要制作单个对象,则应尝试以下操作:

var variables = {};

for (var i = 0; i < n; i++) {

    ab[i] = nt[i].split(";");
    add[i] = ab[i][0];    
    name[i] = ab[i][1];
    variables[name[i]] = add[i];
}
console.log(variables);

答案 2 :(得分:0)

使用Array.reduce

let str = "DB3,B0;var DB3,Int2;zahl DB3,Int4;zahl2 DB3,Int6;zahl3 DB3,Int8;zahl4 DB3,Int10;zahl5";
let obj = str.split(" ").reduce((a,c) => {
  let v = c.split(";");
  Object.assign(a, {[v[1]]: v[0]});
  return a;
}, {});
console.log(obj);