如何在 javascript 中对列表中的特定元素进行排序?

问题描述 投票:0回答:1

在javascript中,我想以自动方式对列表中的变量表示的特定元素进行排序。

const PHQ = [
  {
    q: '1',
    a: [
      { answer: '1', type: ['a']},
      { answer: '2', type: ['b']},
      { answer: '3', type: ['c']},
      { answer: '4', type: ['d']}
    ]
  },
  {
    q: '2',
    a: [
      { answer: '1', type: ['a']},
      { answer: '2', type: ['b']},
      { answer: '3', type: ['c']},
      { answer: '4', type: ['d']}
    ]
  },
  {
    q: '3',
    a: [
      { answer: '1', type: ['a']},
      { answer: '2', type: ['b']},
      { answer: '3', type: ['c']},
      { answer: '4', type: ['d']}
    ]
  }]

const GAD = [
  {
    q: '1',
    a: [
      { answer: '1', type: ['a']},
      { answer: '2', type: ['b']},
      { answer: '3', type: ['c']},
      { answer: '4', type: ['d']}
    ]
  },
  {
    q: '2',
    a: [
      { answer: '1', type: ['a']},
      { answer: '2', type: ['b']},
      { answer: '3', type: ['c']},
      { answer: '4', type: ['d']}
    ]
  },
  {
    q: '3',
    a: [
      { answer: '1', type: ['a']},
      { answer: '2', type: ['b']},
      { answer: '3', type: ['c']},
      { answer: '4', type: ['d']}
    ]
  }]
const RSES = [
  {
    q: '1',
    a: [
      { answer: '1', type: ['a']},
      { answer: '2', type: ['b']},
      { answer: '3', type: ['c']},
      { answer: '4', type: ['d']}
    ]
  },
  {
    q: '2',
    a: [
      { answer: '1', type: ['a']},
      { answer: '2', type: ['b']},
      { answer: '3', type: ['c']},
      { answer: '4', type: ['d']}
    ]
  },
  {
    q: '3',
    a: [
      { answer: '1', type: ['a']},
      { answer: '2', type: ['b']},
      { answer: '3', type: ['c']},
      { answer: '4', type: ['d']}
    ]
  }]

const qnaList = [
    PHQ[0], GAD[0], RSES[0],
    PHQ[1], GAD[1], RSES[1],
    PHQ[2], GAD[2], RSES[2],
  ]

const select = [3,2,1,0,1,2,3,2,1];

each element of 'select' is selected answer in 'qnaList'.

ex) 3 = selected answer of PHQ[0]
    2 = selected answer of GAD[0]
    1 = selected answer of RSES[0]

I want to make lists that represent selected answers of each group of elements in 'qnaList'.

ex) selectedPHQ = [3,0,3]
    selectedGAD = [2,1,2]
    selectedRSES = [1,2,1]

请帮助我..在javascript中,我想以自动方式对列表中的变量表示的特定元素进行排序。

我想制作代表“qnaList”中每组元素(PHQ、GAD、RSES)的选定答案的列表。

ex) selectedPHQ = [3,0,3]
    selectedGAD = [2,1,2]
    selectedRSES = [1,2,1]
javascript arrays list sorting filter
1个回答
0
投票

您可以重新排序索引并获得破坏的数组。

const
    PHQ = [{ q: '1', a: [{ answer: '1', type: ['a'] }, { answer: '2', type: ['b'] }, { answer: '3', type: ['c'] }, { answer: '4', type: ['d'] }] }, { q: '2', a: [{ answer: '1', type: ['a'] }, { answer: '2', type: ['b'] }, { answer: '3', type: ['c'] }, { answer: '4', type: ['d'] }] }, { q: '3', a: [{ answer: '1', type: ['a'] }, { answer: '2', type: ['b'] }, { answer: '3', type: ['c'] }, { answer: '4', type: ['d'] }] }],
    GAD = [{ q: '1', a: [{ answer: '1', type: ['a'] }, { answer: '2', type: ['b'] }, { answer: '3', type: ['c'] }, { answer: '4', type: ['d'] }] }, { q: '2', a: [{ answer: '1', type: ['a'] }, { answer: '2', type: ['b'] }, { answer: '3', type: ['c'] }, { answer: '4', type: ['d'] }] }, { q: '3', a: [{ answer: '1', type: ['a'] }, { answer: '2', type: ['b'] }, { answer: '3', type: ['c'] }, { answer: '4', type: ['d'] }] }],
    RSES = [{ q: '1', a: [{ answer: '1', type: ['a'] }, { answer: '2', type: ['b'] }, { answer: '3', type: ['c'] }, { answer: '4', type: ['d'] }] }, { q: '2', a: [{ answer: '1', type: ['a'] }, { answer: '2', type: ['b'] }, { answer: '3', type: ['c'] }, { answer: '4', type: ['d'] }] }, { q: '3', a: [{ answer: '1', type: ['a'] }, { answer: '2', type: ['b'] }, { answer: '3', type: ['c'] }, { answer: '4', type: ['d'] }] } ],
    qnaList = [PHQ, GAD, RSES],
    select = [3, 2, 1, 0, 1, 2, 3, 2, 1],
    [selectedPHQ, selectedGAD, selectedRSES] = select.reduce((r, v, i) => {
        (r[i % qnaList.length] ??= []).push(v);
        return r;
    }, []);
    
console.log(selectedPHQ);
console.log(selectedGAD);
console.log(selectedRSES);

© www.soinside.com 2019 - 2024. All rights reserved.