gpt4 book ai didi

javascript - 如果值有逗号,则循环并将对象字符串值转换为对象

转载 作者:行者123 更新时间:2023-11-28 14:18:39 25 4
gpt4 key购买 nike

我有一个对象:

{x: '1', y: '1,2,3'}

我想循环遍历它并将字符串转换为对象(如果它包含逗号)。

预期结果应该是:

{x: 1, y: {0: 1, 1: 2, 2: 3}}

我尝试使用 Object.entriesmap 作为 .下面,但我得到的所有结果都未定义。

Object.entries(oResult).map(el => {
if(el[1].includes(',')) {
const aEl = el[1].split(',');
el[1] = Object.assign({}, aEl);
}
})

最佳答案

你可以这样做:

let obj = {x: '1', y: '1,2,3'},
strToObj = str => str.split(',').reduce((r,c,i) => (r[i] = c, r), {})

let result = Object.entries(obj)
.reduce((r,[k,v]) => (r[k] = v.includes(',') ? strToObj(v) : v, r), {})

console.log(result)

这个想法是使用Array.reduce通过首先在 , 上拆分字符串将字符串转换为对象(这就是 strToObj 函数的作用)。然后使用Object.entries您只需获取键/值并组成最终对象。

您也可以将其作为这样的函数:

let strToObj = str => str.split(',').reduce((r,c,i) => (r[i] = c, r), {})

let convertObject = obj => Object.entries(obj).reduce((r,[k,v]) =>
(r[k] = v.length < 2 ? v : strToObj(v), r), {})

console.log(convertObject({x: '1', y: '1,2,3'}))
console.log(convertObject({x: 'A,BC,D', y: 'D,DD,DDD'}))

关于javascript - 如果值有逗号,则循环并将对象字符串值转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56212514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com