На основании ответов, которые вы дали мне на мои вопросы, и вашего примера.Кажется, что порядок ввода всегда будет соответствовать вложенности объектов.Итак, вот мое решение:
const func = (arrOfObjects, ...keys) => {
return arrOfObjects.map(object => {
let obj = object, integer = keys.length;
for (let index = 0; index < integer; index++) {
obj = obj[keys[index]];
if(obj === undefined) break;
}
return obj;
});
};
const input = [
{ a: { b: { c: 10 } } },
{ a: { b: { c: 11 } } },
{ a: { b: { c: 12 } } }
];
console.log(func(input, "a", "b", "c"));
// [10, 11, 12]
console.log(func(input, "a", "b"));
// [{c: 10}, {c: 11}, {c : 12}]
К сожалению, нет такой вещи, как магия javascript, которую вы ожидаете. Примечание: этот код не будет работать, если порядок ключей внутри объекта расположен на произвольной глубине.Но то, что вы пытаетесь решить, это должно работать просто отлично.Также я постарался сохранить ваш исходный код как можно лучше