динамические c именованные значения с использованием деструктуризации - PullRequest
0 голосов
/ 01 апреля 2020

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

Можно ли сделать это так?

  let fields = ["FASE", "BAWTOM_1"]
  let object = {}
  const d = await getData();

  const count = d.reduce((acc, elem) => {

     ({ [fields[0]], [fields[1]] }  = elem)
    return {...acc, [ fields[1] ]: [...(acc[ fields[1] ] || []), {fase: fields[0] }]};
}, {});

Я нахожусь на стеке ({ [fields[0]], [fields[1]] } = elem), что я не могу заставить его работать

любая помощь очень ценится

Элем - что-то вроде этого, с гораздо большим количеством предметов

var elem = [
{"FASE": "2",
"BAWTOM_1": "1",
"BA_SP_1": "0",
"BA_SP_2": "0",
"BA_SP_3": "0",
},
{"FASE": "1",
"BAWTOM_1": "2",
"BA_SP_1": "1",
"BA_SP_2": "0",
"BA_SP_3": "0",
},
{"FASE": "1",
"BAWTOM_1": "1",
"BA_SP_1": "0",
"BA_SP_2": "1",
"BA_SP_3": "0",
},
{"FASE": "2",
"BAWTOM_1": "4",
"BA_SP_1": "1",
"BA_SP_2": "0",
"BA_SP_3": "1",
}
]

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

хорошо, понял.

вот способ, которым я решил это. Конечно, это не рабочий код, я просто играю вокруг, но теперь я могу перевести его на что-то более полезное

    async function pippo() {
  let fields = ["FASE", "BAWTOM_1"]
  let object = {}
  const d = await getData();


  const count = d.reduce((acc, elem) => {

     ({[fields[0]]: object[fields[0]], [fields[1]]: object[fields[1]]} = elem);
    return {...acc, [ object[fields[1]] ]: [...(acc[ object[fields[1]] ] || []), {fase: object[fields[0]] }]};
}, {});

console.log(count)
}
0 голосов
/ 01 апреля 2020

Это не сработает. Смысл деструктуризации - поместить значения в переменные. Поскольку вы не создаете переменные, это не сработает. Вы можете получить доступ к свойствам вручную с помощью синтаксического индексации следующим образом:

const fields0 = elem[fields[0]];
const fields1 = elem[fields[1]];

Надеюсь, это поможет.

...