将对象字符串转换为对象元素

Transform string of objects into elements of object

我有下面的对象字符串,如下所示。

[0,5]
   0: "A123  G  2323232"
   1: "F345  G  345667"
   2: "T677  G  -34343"
   3: "G454  G  4343"
   4: ""

如您所见,"A123 G 2323232" 是一个字符串,其中包含制表符分隔值。

我希望最终输出如下。

[0,4]
   0: 
     UserId:A123
     Type:  G
     Values: 2323232
   1: 
     UserId: F345  
     Type:  G
     Values: 345667
   2: 
     UserId: T677  
     Type:  G
     Values: -34343
   3: 
     UserId: G454  
     Type:  G
     Values: 4343

请注意。第 4 个元素是空字符串。所以它不应该转换为最终数据。

任何人都可以建议如何将其分配给不同的元素。

使用 reducesplit 的组合:

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 arrays
  var parts = str.split("\t");                    // split the string by tabs
  if(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 got
      UserID: parts[0],
      Type: parts[1],
      Values: parts[2]
    });
  }
  return res;
}, []);

console.log(result);

您可以将每个字符串拆分成单独的数据片段,然后将这些片段映射到具有所需属性的对象中。这是它的样子:

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);

您可以使用 javascript filter()map() 方法,如下所示。

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);

您可以匹配非 space 部分并将数组解构为所需的属性和 return 一个对象。

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; }