Javascript 编写嵌套映射函数
我有一个这样的物体:Javascript 编写嵌套映射函数,javascript,arrays,mapping,Javascript,Arrays,Mapping,我有一个这样的物体: const object = { detectors: [1, 2], responders: [4, 22], activators: [5, 23, 31], enablers: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], upgraders: [14, 15, 16, 17, 18, 19, 20, 21, 22], catalyzer: [12, 29], chains: [27], trappers:
const object = {
detectors: [1, 2],
responders: [4, 22],
activators: [5, 23, 31],
enablers: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
upgraders: [14, 15, 16, 17, 18, 19, 20, 21, 22],
catalyzer: [12, 29],
chains: [27],
trappers: [13],
finishers: [16],
}
object.activators.map((activator, i) => {
return object.detectors.map((detector, i) => {
return object.responders.map((responder, i) => {
return {
detectors: detector,
responders: responder,
activators: activator,
};
});
});
});
预期产出:
[
{
'detectors': 1,
'responders': 4,
'activators': 5,
'enablers': 1,
'upgraders': 23,
'catalyzer': 12,
'chains': 27,
'trappers': 13,
'finishers': 16,
},
{
'detectors': 2,
'responders': 4,
'activators': 5,
'enablers': 1,
'upgraders': 23,
'catalyzer': 12,
'chains': 27,
'trappers': 13,
'finishers': 16,
},
{
'detectors': 1,
'responders': 22,
'activators': 5,
'enablers': 1,
'upgraders': 23,
'catalyzer': 12,
'chains': 27,
'trappers': 13,
'finishers': 16,
},
{...
我已经写了这样一个函数:
const object = {
detectors: [1, 2],
responders: [4, 22],
activators: [5, 23, 31],
enablers: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
upgraders: [14, 15, 16, 17, 18, 19, 20, 21, 22],
catalyzer: [12, 29],
chains: [27],
trappers: [13],
finishers: [16],
}
object.activators.map((activator, i) => {
return object.detectors.map((detector, i) => {
return object.responders.map((responder, i) => {
return {
detectors: detector,
responders: responder,
activators: activator,
};
});
});
});
我可以编写另一个函数来展平上面代码的输出,但是有没有其他方法可以将上面的代码编写成一个更通用的函数(不是硬编码的),可以应用于任何对象?您可以使用递归函数从条目中获取所有排列
const对象={
探测器:[1,2,3],
答复者:[4,22],
激活剂:[1,2,3,4]
};
const getPermutations=obj=>{
常数res=[];
常量项=对象项(obj);
常量go=(当前,idx)=>{
const key=entries[idx][0];
对于(条目常量[idx][1]){
const next={…curr[key]:val};
如果(idx!==entries.length-1)转到(下一步,idx+1);
else res.push(下一步);
}
};
go({},0);
返回res;
}
log(getPermutations(object))代码>您可以使用递归函数从条目中获取所有排列
const对象={
探测器:[1,2,3],
答复者:[4,22],
激活剂:[1,2,3,4]
};
const getPermutations=obj=>{
常数res=[];
常量项=对象项(obj);
常量go=(当前,idx)=>{
const key=entries[idx][0];
对于(条目常量[idx][1]){
const next={…curr[key]:val};
如果(idx!==entries.length-1)转到(下一步,idx+1);
else res.push(下一步);
}
};
go({},0);
返回res;
}
log(getPermutations(object))代码>显示您期望的输出可能更简单好的,我只是添加了期望的输出,我不明白为什么会是期望的输出。你有比你显示的更多的属性吗?我的问题是,忘了更改对象。我认为最好使用。减少而不是映射。这样可以更简单地显示你期望的输出。好的,我只是添加了期望的输出。我不明白为什么这会是期望的输出。你有比你显示的更多的属性吗?我的问题是,忘了更改对象。我认为最好使用。减少而不是映射