myObj = {1-inputWidth : '30px' , 1-inputHeight: '30px', 1-color : 'red',
2-inputWidth : '20px' , 2-inputHeight: '10px', 2-color : 'blue',
3-inputWidth : '60px' , 3-inputHeight: '70px', 3-color : 'white',
4-inputWidth : '90px' , 4-inputHeight: '10px', 4-color :'yellow',
scroll : 'auto', z-index : 1}
resultObj = {1: {1-inputWidth : '30px' , 1-inputHeight: '30px', 1-color : 'red'},
2: { 2-inputWidth : '20px' , 2-inputHeight: '10px', 2-color : 'blue'},
3: {3-inputWidth : '60px' , 3-inputHeight: '70px', 3-color : 'white'},
4: {4-inputWidth : '90px' , 4-inputHeight: '10px', 4-color :'yellow'}}
ほとんどのキーが数字で始まり、いくつかはそうではないオブジェクトがあります。scrollやz-indexのような番号で始まらないキーを削除し、最初のキー番号と一致する番号としてキーを持つネストされたオブジェクトを作成しようとしています。これは実際に私の頭を台無しにしました。誰かがこれを達成する方法を私に提案できますか?前もって感謝します。
を繰り返してObject.entries
、正規表現で各キーを調べて、数字で始まるかどうかを確認できます。その場合は、それを適切なサブオブジェクトに追加します。
let myObj = {'1-inputWidth' : '30px' , '1-inputHeight': '30px', '1-color' : 'red','2-inputWidth' : '20px' , '2-inputHeight': '10px', '2-color' : 'blue','3-inputWidth' : '60px' , '3-inputHeight': '70px', '3-color' : 'white', '4-inputWidth' : '90px' , '4-inputHeight': '10px', '4-color' :'yellow', scroll : 'auto', 'z-index' : 1}
let o = Object.entries(myObj)
.reduce((obj, [k, v]) => {
let num = k.match(/^\d+/) // get number in key?
if (num) { // was there a match?
if (obj[num]) obj[num][k] = v // add new entry
else obj[num] = {[k]: v}
}
return obj
}, {})
console.log(o)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加