我有下面的对象字符串,如下所示。
[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个元素是空字符串。所以它不应该转换为最终数据。
任何人都可以建议如何将其分发给不同的元素。
答案 0 :(得分:3)
您可以将每个字符串拆分为各自的数据片段,然后将这些片段映射到具有所需属性的对象中。这就是它的样子:
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);
答案 1 :(得分:3)
您可以匹配非空间部分并将数组解构为所需属性并返回一个对象。
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; }

答案 2 :(得分:1)
使用reduce
和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 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);
答案 3 :(得分:1)
您可以使用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);