簡體   English   中英

將字符串鍵對數組轉換為 object

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM