К вложенному множеству или не к вложенному множеству?

Вы можете использовать reduce и Object.values следующим образом:

const matrixArray = [{Responded:1,RowName:'row1',ColName:'col1'},{Responded:2,RowName:'row1',ColName:'col2'},{Responded:0,RowName:'row1',ColName:'col3'},{Responded:0,RowName:'row2',ColName:'col1'},{Responded:0,RowName:'row2',ColName:'col2'},{Responded:1,RowName:'row2',ColName:'col3'},{Responded:1,RowName:'row3',ColName:'col1'},{Responded:0,RowName:'row3',ColName:'col2'},{Responded:1,RowName:'row3',ColName:'col3'}]

const merged = matrixArray.reduce((acc, {Responded,RowName,ColName}) => {
       acc[RowName] = acc[RowName] || {RowName};
       acc[RowName][ColName] = (acc[RowName][ColName] + Responded) || Responded;
       return acc;
   }, {});

const output = Object.values(merged);
console.log(output)

[ 1111]

Вот более короткая версия приведенного выше кода:

const matrix = [{Responded:1,RowName:'row1',ColName:'col1'},{Responded:2,RowName:'row1',ColName:'col2'},{Responded:0,RowName:'row1',ColName:'col3'},{Responded:0,RowName:'row2',ColName:'col1'},{Responded:0,RowName:'row2',ColName:'col2'},{Responded:1,RowName:'row2',ColName:'col3'},{Responded:1,RowName:'row3',ColName:'col1'},{Responded:0,RowName:'row3',ColName:'col2'},{Responded:1,RowName:'row3',ColName:'col3'}],
  
output = Object.values(matrix.reduce((a, {Responded,RowName,ColName}) => (
    (a[RowName] = a[RowName] || {RowName})[ColName] = Responded, a), {}));

console.log(output);

11
задан blank 27 January 2009 в 06:13
поделиться

3 ответа

users/:user_id/companies/:company_id/locations/

В то время как технически это прекрасно, не был бы именованный помощник маршрута поэтому быть

user_company_location_path( user_id, company_id, location_id )

необходимость везти параметры раунда 3 как этот является раздражающей. Что-либо раздражающее является, вероятно, красным флагом.

2
ответ дан 3 December 2019 в 10:05
поделиться

Я склонен следовать совету Jamis Buck и никогда вложенному множеству больше чем один уровень глубоко.

Править: Если бы Вы собираетесь вложить больше чем 1 уровень, я проверил бы новую мелкую функцию маршрутов в Краю

7
ответ дан 3 December 2019 в 10:05
поделиться

Пока это звучит хорошим в теории, я нашел вложение, больше чем один уровень может начать становиться сбивающим с толку - особенно, если у Вас есть тот же именованный контроллер на разных уровнях (который может быть довольно распространен),

Например,

  user/x/blog/y/profile/z, and
  user/x/profile/a

Я буду часто находить, что работаю в другом пространстве имен к тому, что я думаю, что работаю в. Если они делают подобные, но разные вещи, это может стать довольно сбивающим с толку =)

Мое текущее приложение, я прошел на прошлой неделе и удалил большинство вложенных маршрутов. (Конечно, YMMV)

1
ответ дан 3 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: