-
陪伴而非守候
我稍微修改了你的例子,并使用了字符串,以便有一个有效的对象。这将是一种方法:const input = { prop1: "value1", prop2: "value2", nested1: ["A","B"], nested2: ["C","D"], nested3: ["E","F"],};const output = new Array(input.nested1.length).fill().map((_, i) => ({ prop1: input.prop1, prop2: input.prop2, nested1: input.nested1[i], nested2: input.nested2[i], nested3: input.nested3[i]}));console.log(output);
-
翻阅古今
如果您是初学者,那么您可以像这样简单地完成上述任务。const input = { prop1: "value1", prop2: "value2", nested1: ["A","B"], nested2: ["C","D"], nested3: ["E","F"],};let arr1 ={ prop1:input.prop1, prop2:input.prop2, nested1:input.nested1[0], nestend2:input.nested2[0], nested3:input.nested3[0],}let arr2 ={ prop1:input.prop1, prop2:input.prop2, nested1:input.nested1[1], nestend2:input.nested2[1], nested3:input.nested3[1],}console.log({items:[arr1,arr2]});
-
qq_遁去的一_1
使用map和解构const convert = ({ nested1, nested2, nested3, ...rest }) => ({ items: nested1.map((nested1, i) => ({ ...rest, nested1, nested2: nested2[i], nested3: nested3[i], }))});const obj = { prop1: 'value1', prop2: 'value2', nested1: [{ 'A': 'a' }, { 'B': 'b' }], nested2: [{ 'C': 1 }, { 'D': 2 }], nested3: [{ 'E': 5 }, { 'F': 6 }],};console.log(convert(obj));
-
阿晨1998
任意情况的通用解决方案function buildItems(obj) { const commonPairs = Object.entries(obj).reduce( (accumulate, [key, val]) => Array.isArray(val) ? accumulate : { ...accumulate, [key]: val }, {} ) const arrayPairs = Object.entries(obj).reduce( (accumulate, [key, val]) => !Array.isArray(val) ? accumulate : { ...accumulate, [key]: val }, {} ) if (Object.keys(arrayPairs).length === 0) { return [{ ...commonPairs }] } const res = [] for (let i = 0; i < arrayPairs[Object.keys(arrayPairs)[0]].length; i++) { res.push({ ...commonPairs, ...Object.keys(arrayPairs).reduce( (acc, key) => ({ ...acc, [key]: arrayPairs[key][i] }), {} ), }) } return res}console.log( "1)", buildItems({ prop1: "value1", prop2: "value2", nested1: [{ A: 1 }, { B: 1 }, { G: 1 }], nested2: [{ C: 1 }, { D: 1 }, { H: 1 }], nested3: [{ E: 1 }, { F: 1 }, { I: 1 }], nested4: [{ J: 1 }, { K: 1 }, { L: 1 }], nested5: [{ M: 1 }, { N: 1 }, { O: 1 }], }), "\n")console.log( "2)", buildItems({ prop1: "value1", prop2: "value2", }), "\n")console.log( "3)", buildItems({ prop1: "value1", prop2: "value2", nested1: [{ A: 1 }, { B: 1 }, { G: 1 }], }), "\n")