[英]Convert an array of string key pairs to an object
我有这个数据结构:
[
'ecl:hzl byr:1926 iyr:2010,pid:221225902 cid:61 hgt:186cm eyr:2021 hcl:#7d3b0c',
'hcl:#efcc98 hgt:178 pid:433543520,eyr:2020 byr:1926,ecl:blu cid:92,iyr:2010',
'iyr:2018,eyr:2026,byr:1946 ecl:brn,hcl:#b6652a hgt:158cm,pid:822320101'
]
我正在寻找将这些数组值转换为对象而不是字符串。 我知道我需要用split(' ')
做一个map
,但不确定里面的逻辑。
所需的 output:
[
{ecl: 'hzl', byr: 1926},
{hcl: '#efcc98', byr: 1926}
]
等所有领域。
我试过了:
.map(values => { let pair = values.split(':'); obj[pair[0]] = pair[1]; return obj })
但似乎从数组的第一个索引开始一遍又一遍地重复相同的 object。
如果您希望将数组的每个元素作为单独的 object 获取,请尝试以下操作:
const input = [ 'ecl:hzl byr:1926 iyr:2010,pid:221225902 cid:61 hgt:186cm eyr:2021 hcl:#7d3b0c', 'hcl:#efcc98 hgt:178 pid:433543520,eyr:2020 byr:1926,ecl:blu cid:92,iyr:2010', 'iyr:2018,eyr:2026,byr:1946 ecl:brn,hcl:#b6652a hgt:158cm,pid:822320101' ] const output = input.map((string) => { // for each string in array const pairs = string.split(/[\,]/); // split by space or comma const object = {}; // create an object for (pair of pairs) { // for each pair in string const parts = pair.split(":"); // split by colon if (parts.length == 2) { // if you get 2 parts after splitting object[parts[0]] = parts[1]; // use the first part as a key and the second as a value } } return object; }); console.log(output);
您可以使用Object.fromEntries
。
const arr = [ 'ecl:hzl byr:1926 iyr:2010,pid:221225902 cid:61 hgt:186cm eyr:2021 hcl:#7d3b0c', 'hcl:#efcc98 hgt:178 pid:433543520,eyr:2020 byr:1926,ecl:blu cid:92,iyr:2010', 'iyr:2018,eyr:2026,byr:1946 ecl:brn,hcl:#b6652a hgt:158cm,pid:822320101' ]; const res = arr.map(x => Object.fromEntries(x.replace(/,/g, ' ').split(' ').map(y => y.split(':')))); console.log(res);
尝试这个
array = array.map(val => {
var obj = {}
val.split(' ').forEach(keyValPair => {
var keyVal = keyValPair.split(':')
obj[keyVal[0]] = keyVal[1];
})
return obj;
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.