Использование переменной в функции снижения - PullRequest
1 голос
/ 08 июня 2019

есть ощущение, что я упускаю что-то очевидное здесь. Я использовал функцию уменьшения, как так

const obj = this.data.reduce((ac,{Category, Count}) => (ac[Category] = Count,ac),{});

Однако мне нужно, чтобы Category и Count были динамическими с использованием переменной. Таким образом, я сделал

const cat = this.format.header[0];
const count = this.format.header[1];
const obj = this.data.reduce((ac,{cat, count}) => (ac[cat] = count,ac),{});

Кажется, это не использует мои переменные. Я также пытался использовать это в нем, но это также не работает.

Как я могу использовать эти переменные при уменьшении?

Спасибо

Ответы [ 2 ]

4 голосов
/ 08 июня 2019

Вы не можете использовать деструктуризацию таким образом, чтобы приблизиться к тому, что вы хотите:

this.data.reduce((ac,{cat, count}) => (ac[cat] = count,ac),{});

Это попытается получить доступ к свойствам cat и count из объектов, принадлежащих массиву, а не из тех, которые содержат ваши переменные. Тем не менее, вы можете сделать так:

const cat = this.format.header[0];
const count = this.format.header[1];
const obj = this.data.reduce((ac, o) => (ac[o[cat]] = o[count], ac), {});
3 голосов
/ 08 июня 2019

Переменные cat и count внутри обратного вызова reduce() будут ссылаться на свойства cat и count, для каждого объекта - массив объектов this.data.

Если выхочу уничтожить свойства с помощью переменных.Затем используйте следующий синтаксис

[propName]:newName

Вот ваш код.

const cat = this.format.header[0];
const count = this.format.header[1];
const obj = this.data.reduce((ac,{[cat]:cat, [count]:count}) => (ac[cat] = count,ac),{});
...