Javascript 将对象字符串转换为对象的元素
我下面有一组对象,如下所示Javascript 将对象字符串转换为对象的元素,javascript,jquery,arrays,object,underscore.js,Javascript,Jquery,Arrays,Object,Underscore.js,我下面有一组对象,如下所示 [0,5] 0: "A123 G 2323232" 1: "F345 G 345667" 2: "T677 G -34343" 3: "G454 G 4343" 4: "" 如您所见,“A123 G 23232”是一个字符串,其中包含制表符分隔的值 我想有一个最终输出如下 [0,4] 0: UserId:A123 Type: G Values: 2323232 1:
[0,5]
0: "A123 G 2323232"
1: "F345 G 345667"
2: "T677 G -34343"
3: "G454 G 4343"
4: ""
如您所见,“A123 G 23232”是一个字符串,其中包含制表符分隔的值
我想有一个最终输出如下
[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
请注意。第四个元素是空字符串。因此,它不应转换为最终数据
任何人都可以建议如何将其分配到不同的元素 使用
reduce
和split
的组合:
var字符串=[
“A123G 23232”,
“F345 G 345667”,
“T677 G-34343”,
“G454 G 4343”,
""
];
var result=strings.reduce(函数(res,str){//用于字符串数组中的每个字符串
var parts=str.split(“\t”);//按制表符拆分字符串
if(parts.length==3){//如果字符串有效(拆分产生3个部分)
res.push({//然后使用我们得到的部分向结果数组添加一个对象
UserID:parts[0],
类型:零件[1],
数值:零件[2]
});
}
返回res;
}, []);
控制台日志(结果)代码>您可以将每个字符串拆分为各自的数据段,然后将这些数据段映射到具有所需属性的对象中。下面是它的外观:
var数据=[“A123 G 2323232”、“F345 G 345667”、“T677 G-34343”、“G454 G 4343”等];
/*ES6语法*/
var objects=data.filter(str=>str!==“”).map(function(str){
var[UserId,Type,Values]=str.split(“”);
返回{UserId,Type,Values};
});
/*ES5语法*/
var objectsES5=data.filter(函数(str){
返回str!==“”;
}).map(函数(str){
var split=str.split(“”);
返回{
UserId:split[0],
类型:拆分[1],
值:拆分[2]
};
});
console.log(对象)
您可以使用javascriptfilter()
和map()
方法来实现这一点,如下所示
var数组=[“A123 G 23232”,
“F345 G 345667”,
“T677 G-34343”,
“G454 G 4343”,
""];
var result=array.filter(函数(项){
return item.trim();
}).map(功能(项目){
var分割=项目分割(“”);
返回{
UserId:split[0],
类型:拆分[1],
值:拆分[2]
};
});
控制台日志(结果)代码>您可以匹配非空格部分,并将数组解构为所需的属性,然后返回一个对象
var数据=[“A123 G 2323232”、“F345 G 345667”、“T677 G-34343”、“G454 G 4343”和“,”,
结果=数据
.filter(布尔值)
.map(s=>{
var[UserId,Type,Values]=s.match(/[^]+/g);
返回{UserId,Type,Values};
});
控制台日志(结果)代码>
.as-console-wrapper{max-height:100%!important;top:0;}
使用函数分离字符串,然后将结果附加到特定ID。@MaulikBhatt-你能给我看一个例子吗?我能看看这个吗请定义“选项卡”!它们是两个相邻的空格吗?或者是\t
?@Rihana我硬拷贝了你的字符串,这些字符串中没有制表符\t
。已修复。map
无法工作。那么原始数组末尾的空字符串呢。@ibrahimmahrir错过了,谢谢。尼娜的解决方案添加了.filter(布尔值)
。这可能是最好的方法,但为了不抄袭她的想法,我会过滤空字符串。