Skip to content Skip to sidebar Skip to footer

Transform String Of Objects Into Elements Of Object

I have this below string of objects as shown below. [0,5] 0: 'A123 G 2323232' 1: 'F345 G 345667' 2: 'T677 G -34343' 3: 'G454 G 4343' 4: '' As you can see '

Solution 1:

You could match non space parts and deconstruct the array to the wanted properties and return an object.

var data = ["A123  G  2323232", "F345  G  345667", "T677  G  -34343", "G454  G  4343", ""],
    result = data
        .filter(Boolean)
        .map(s => {
            var [UserId, Type, Values] = s.match(/[^ ]+/g);
            return { UserId, Type, Values };
        });
                
console.log(result);
.as-console-wrapper { max-height: 100%!important; top: 0; }

Solution 2:

You can split each string into its individual pieces of data, and then map those pieces into an object with the properties you want. Here's what it would look like:

var data = ["A123  G  2323232","F345  G  345667","T677  G  -34343","G454  G  4343", ""];
/* ES6 Syntax */var objects = data.filter(str => str !== "").map(function (str) {
  var [UserId, Type, Values] = str.split("  ");
  return { UserId, Type, Values };
});

/* ES5 Syntax */var objectsES5 = data.filter(function (str) {
  return str !== "";
}).map(function (str) {
  var split = str.split("  ");
  return {
    UserId: split[0],
    Type: split[1],
    Values: split[2]
  };
});

console.log(objects);

Solution 3:

Use a combo of reduce and split:

var strings = [
  "A123	G	2323232",
  "F345	G	345667",
  "T677	G	-34343",
  "G454	G	4343",
  ""
];

var result = strings.reduce(function(res, str) {  // for each string in strings arraysvar parts = str.split("\t");                    // split the string by tabsif(parts.length === 3) {                        // if the string is valid (the splitting yielded 3 parts)
    res.push({                                    // then add an object to the result array using the parts we gotUserID: parts[0],
      Type: parts[1],
      Values: parts[2]
    });
  }
  return res;
}, []);

console.log(result);

Solution 4:

You can do it using javascript filter() and map() methods like following.

var array = ["A123  G  2323232",
             "F345  G  345667",
             "T677  G  -34343",
             "G454  G  4343",
             ""];

var result = array.filter(function(item) {
  return item.trim();
}).map(function(item) {
  var split = item.split('  ');
  
  return {
    UserId: split[0],
    Type: split[1],
    Values: split[2]
  };
});

console.log(result);

Post a Comment for "Transform String Of Objects Into Elements Of Object"