我需要转换一个这样格式化的字符串:
string = "John:31,Miranda:28"在这上面;
obj ={ "John“=> 31,"Miranda”=> 28 }
我做了这个:
const class = new Map();
array = string.split(",");很明显,我不知道怎么处理它,因为在分裂之后,我得到了这样的东西:
["John:31", "Miranda:28"]我不知道如何把它变成一个对象(使用":“作为箭头).也许我不需要用数组作为中介?有什么想法吗?谢谢
发布于 2019-08-04 15:55:20
您可以使用split按逗号进行拆分,然后在生成的字符串上使用map再用冒号进行拆分,并将得到的数组输入Map构造函数。
例如,如果您希望将地图按名称键化,我怀疑您会这样做:
const string = "John:31,Miranda:28"
const map = new Map(string.split(",").map(entry => entry.split(":")));
console.log(map.get("John")); // "31" (a string)
如果您希望数字是数字,而不是字符串,则需要转换它们:
const string = "John:31,Miranda:28"
const map = new Map(string.split(",").map(entry => {
const parts = entry.split(":");
parts[1] = +parts[1];
return parts;
}));
console.log(map.get("John")); // 31 (a number)
My answer here详细介绍了将字符串转换为数字的选项。
如果您希望以值作为键(我怀疑您不需要,但是.),则只需反转内部数组条目的顺序:
const string = "John:31,Miranda:28"
const map = new Map(string.split(",").map(entry => {
const [name, num] = entry.split(":");
return [num, name];
}));
console.log(map.get("31")); // John
发布于 2019-08-04 15:57:59
你可以试试这样的方法:
const data = "John:31,Miranda:28"
const splitData = data.split(',')
const result = splitData.reduce((newObject, item) => {
const [name, age] = item.split(':')
return {
...newObject,
[name]: parseInt(age)
}
}, {})
console.log(result)发布于 2019-08-04 15:58:13
所以在逗号上拆分,在上面循环,在冒号上拆分,然后构建对象。
var myString = "John:31,Miranda:28"
var myObj = myString.split(',').reduce(function (obj, part) {
var pieces = part.split(':')
obj[pieces[0]] = pieces[1]
return obj
}, {})
https://stackoverflow.com/questions/57348031
复制相似问题