Так Instance У меня есть следующие функции:Передача аргумента функции, которая преобразует объект присваивания
function merge(arr, key) {
return arr.reduce((r, o) => {
if (r[o.key]) {
r[o.key].real += o.real;
} else {
r[o.key] = { key: o.key, real: o.real };
}
return r;
}, {});
}
И я хочу использовать его в 10 раз, но каждый раз, когда { key: o.key, real: o.real }
будет отличаться, например, { key: o.key, valueX: o.valueX }
и т.д. Как я могу сгенерировать этот объект как параметр функции? так Если бы я работать
merge(arr, key, ['key, real']) // object assign will happen to key and real
Я немного запутался там
Случай 1:
var arrayOne = [{ someKey: '22', value: 345 }, { someKey: '22', value: 543 }]
function merge(arr, key) {
return arr.reduce((r, o) => {
if (r[o.key]) {
r[o.key].value += o.value;
} else {
r[o.key] = { key: o.someKey, value: o.value };
}
return r;
}, {});
}
console.log(merge(arrayOne, 'someKey'))
Случай 2:
var arrayTwo = [{ someKeyY: '22', valueZ: 345 }, { someKeyY: '22', valueZ: 543 }]
function merge(arr, key) {
return arr.reduce((r, o) => {
if (r[o.key]) {
r[o.key].valueZ += o.valueZ;
} else {
r[o.key] = { key: o.someKeyY, valueZ: o.valueZ };
}
return r;
}, {});
}
console.log(merge(arrayTwo, 'someKeyY'))
Я хочу универсальную функцию вместо того, чтобы писать ту же функцию, снова и снова и изменяя только объект назначения ...
пожалуйста, добавьте вход и ожидаемый результат, а также. –
Непонятно, что вы просите; отвечая на вопрос @ NinaScholz выше, поможет честно, но если вы сможете объяснить более четко, это тоже будет хорошо. Я подозреваю, что [ответы на этот вопрос] (http://stackoverflow.com/questions/4244896/dynamically-access-object-property-using-variable) поможет, однако, поскольку 'o.key' всегда обращается к свойству, называемому' ' key ", тогда как' o [key] 'обращается к свойству, названному значением переменной' key'. –
Я отредактировал сообщение @NinaScholz –