[英]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.