Javascript 使用键将数组转换为对象
我有一个目标Javascript 使用键将数组转换为对象,javascript,arrays,spread-syntax,Javascript,Arrays,Spread Syntax,我有一个目标 { ids: ['11', '12', '13', '14'], cat: 1 } 我想把这个转换成 [ { id: '11', cat: 1 }, { id: '12', cat: 1 }, { id: '13', cat: 1 }, { id: '14', cat: 1 } ] 是否可以使用这种单一语法?我们可以使用扩展语法吗?如果带有对象的数组再次调用getCartesian并构建新对象,则可以使用递归函数分离所有键/值对,
{
ids: ['11', '12', '13', '14'],
cat: 1
}
我想把这个转换成
[
{ id: '11', cat: 1 },
{ id: '12', cat: 1 },
{ id: '13', cat: 1 },
{ id: '14', cat: 1 }
]
是否可以使用这种单一语法?我们可以使用扩展语法吗?如果带有对象的数组再次调用
getCartesian
并构建新对象,则可以使用递归函数分离所有键/值对,并通过迭代值来构建新的笛卡尔积
这些键必须与结果集中后面的键具有相同的名称
函数getCartesian(对象){
返回Object.entries(Object).reduce((r[k,v])=>{
var-temp=[];
r、 forEach(s=>
(Array.isArray(v)?v:[v]).forEach(w=>
(w&&typeof w==='object'?getCartesian(w):[w])。forEach(x=>
临时推送(对象赋值({},s,{[k]:x}))
)
)
);
返回温度;
}, [{}]);
}
变量数据={id:['11','12','13','14'],类别:1};
log(getCartesian(data))代码>
.as控制台包装{max height:100%!important;top:0;}
嗯,它只是ID
上的映射
var obj={
识别码:['11','12','13','14'],
猫:1
};
console.log(对象ID.map((x)=>{
返回{
id:x,
猫:obj.cat
};
}));代码>这不是JSON。
var test = {
ids: ['11', '12', '13', '14'],
cat: 1
}
// one line
test.ids.map(i => { return {id: i, cat: test.cat} } )