我想将 Javascript 对象转换为不同的形式。让我们举个例子。
可能我有这样的对象,
```javascript
[
{
"_id": 1,
"name": "abc",
"sub": [
"bbb",
"ccc"
]
},
{
"_id": 8,
"name": "abc1",
"sub": [
"bbb1"
]
},
{
"_id": 11,
"name": "abc"
}
]
我想像下面这样转换它,
```javascript
[
{
"_id": 1,
"name": "abc",
"sub": [
{
"sub": "bbb"
},
{
"sub": "ccc"
}
]
},
{
"_id": 8,
"name": "abc1",
"sub": [
{
"sub": "bbb1"
}
]
},
{
"_id": 11,
"name": "abc"
}
]
我的代码看起来像这样,
x.map(({ sub }) => ({ sub: sub }));
如果我尝试这个,我会得到这样的结果,
[{"sub":["bbb","ccc"]},{"sub":["bbb1"]},{}]
谁能帮我解决这个问题。谢谢
将Array.prototype.map()与扩展运算符一起使用两次
let a = [
{
"_id": 1,
"name": "abc",
"sub": [
"bbb",
"ccc"
]
},
{
"_id": 8,
"name": "abc1",
"sub": [
"bbb1"
]
},
{
"_id": 11,
"name": "abc"
}
]
let b = a.map((el) => {
if(el.sub){
let c = el.sub.map(el2 => {
return {sub: el2}
})
el = {...el,sub: c}
}
return el;
})
console.log(b)
建议你自己好好看看,这个问题并不是很复杂。
const data = [
{
"_id": 1,
"name": "abc",
"sub": [
"bbb",
"ccc"
]
},
{
"_id": 8,
"name": "abc1",
"sub": [
"bbb1"
]
},
{
"_id": 11,
"name": "abc"
}
]
data.forEach(cur => {
if (cur.sub) {
cur.sub = cur.sub.map(su => ({ sub: su }))
}
})
console.log(data)