如何在javascript中对数组中的变量进行排序?

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

const select = ['0', '0', '4', '0', '1', '4', '1', '1', '4', '0', '0', '4', '0', '0', '4', '0', '1', '4', '0', '0', '4', '0', '4', '0', '4', '4']

const PHQ = [
  {
    q: 'A',
    a: [
      { answer: '0', type: []},
      { answer: '1', type: ['6']},
      { answer: '2', type: ['6']},
      { answer: '3', type: ['6']}
    ]
  },
  {
    q: 'B',
    a: [
      { answer: '0', type: []},
      { answer: '1', type: ['0']},
      { answer: '2', type: ['0']},
      { answer: '3', type: ['0']}
    ]
  }
]

const GAD = [
  {
    q: 'C',
    a: [
      { answer: '0', type: []},
      { answer: '1', type: ['0']},
      { answer: '2', type: ['0']},
      { answer: '3', type: ['0']}
    ]
  },
  {
    q: 'D',
    a: [
      { answer: '0', type: []},
      { answer: '1', type: ['2']},
      { answer: '2', type: ['2']},
      { answer: '3', type: ['2']}
    ]
  }
]

const RSES = [
  {
    q: 'E',
    a: [
      { answer: '0', type: []},
      { answer: '1', type: []},
      { answer: '2', type: []},
      { answer: '3', type: []},
      { answer: '4', type: []}
    ]
  },
  {
    q: 'F',
    a: [
      { answer: '0', type: []},
      { answer: '1', type: []},
      { answer: '2', type: []},
      { answer: '3', type: []},
      { answer: '4', type: []}
    ]
  }
]

const qnaList = [
  PHQ[0], GAD[0], RSES[0],
  PHQ[1], GAD[1], RSES[1],
  PHQ[2], GAD[2], RSES[2],
  PHQ[3], GAD[3], RSES[3],
  PHQ[4], GAD[4], RSES[4],
  PHQ[5], GAD[5], RSES[5],
  PHQ[6], GAD[6], RSES[6],
  PHQ[7], RSES[7],
  PHQ[8], RSES[8],
  RSES[9]
]

function GroupingResult(){

  for (let i = 0; i < qnaList.length; i++) {
    const questionType = i % 3; // classifing questions by index (PHQ= 0, GAD= 1, RSES= 2)
    const selectedAnswer = select[i];

    switch (questionType) {
      case 0:
        selectedPHQ.push(selectedAnswer);
        break;
      case 1:
        selectedGAD.push(selectedAnswer);
        break;
      case 2:
        selectedRSES.push(selectedAnswer);
        break;
      default:
        break;
    }
  }
  console.log('selectedPHQ:', selectedPHQ);
  console.log('selectedGAD:', selectedGAD);
  console.log('selectedRSES:', selectedRSES);
}
GroupingResult();

enter image description here

我不想按索引对问题进行分类。请告诉我如何按名称对问题进行排序。(PHQ、GAD、RSES)

selectedPHQ = [PHQ[0], ... ,PHQ[8]],
selectedGAD = [GAD[0], ... , GAD[6]],
selectedRSES = [RSES[0], ... ,RSES[9]]

我会在“qnaList”中插入更多问题,因此我必须按名称而不是索引对问题进行排序。因为如果我在“qnaList”中添加更多问题,“qnaList”中的所有索引都会更改,因此 selectedPHQ、selectedGAD、seletedRSES 列表也会更改。

enter image description here

我尝试使用索引对数组进行排序,但出错了。由于变量数量(PHQ,GAD,RSES)不同,每个问题的指标没有规律性

javascript arrays sorting variables arraylist
1个回答
0
投票

从值到保存该值的变量名称没有直接链接。获取“名称”的唯一方法是搜索变量的内容。

const qnaList = [
  PHQ[0], GAD[0], RSES[0],
  PHQ[1], GAD[1], RSES[1],
  PHQ[2], GAD[2], RSES[2],
  PHQ[3], GAD[3], RSES[3],
  PHQ[4], GAD[4], RSES[4],
  PHQ[5], GAD[5], RSES[5],
  PHQ[6], GAD[6], RSES[6],
  PHQ[7], RSES[7],
  PHQ[8], RSES[8],
  RSES[9]
]

const selectedPHQ = [];
const selectedGAD = [];
const selectedRSES = [];

function GroupingResult() {

  for (let i = 0; i < qnaList.length; i++) {
    const selectedAnswer = select[i];
    const curQ = qnaList[i];
    if (PHQ.includes(curQ)) {
      selectedPHQ.push(selectedAnswer);
    } else if (GAD.includes(curQ)) {
      selectedGAD.push(selectedAnswer);
    } else if (RSES.includes(curQ)) {
      selectedRSES.push(selectedAnswer);
    }
  }
  console.log('selectedPHQ:', selectedPHQ);
  console.log('selectedGAD:', selectedGAD);
  console.log('selectedRSES:', selectedRSES);
}
GroupingResult();
<script>
  const select = ['0', '0', '4', '0', '1', '4', '1', '1', '4', '0', '0', '4', '0', '0', '4', '0', '1', '4', '0', '0', '4', '0', '4', '0', '4', '4']

  const PHQ = [{
      q: 'A',
      a: [{
          answer: '0',
          type: []
        },
        {
          answer: '1',
          type: ['6']
        },
        {
          answer: '2',
          type: ['6']
        },
        {
          answer: '3',
          type: ['6']
        }
      ]
    },
    {
      q: 'B',
      a: [{
          answer: '0',
          type: []
        },
        {
          answer: '1',
          type: ['0']
        },
        {
          answer: '2',
          type: ['0']
        },
        {
          answer: '3',
          type: ['0']
        }
      ]
    }
  ]

  const GAD = [{
      q: 'C',
      a: [{
          answer: '0',
          type: []
        },
        {
          answer: '1',
          type: ['0']
        },
        {
          answer: '2',
          type: ['0']
        },
        {
          answer: '3',
          type: ['0']
        }
      ]
    },
    {
      q: 'D',
      a: [{
          answer: '0',
          type: []
        },
        {
          answer: '1',
          type: ['2']
        },
        {
          answer: '2',
          type: ['2']
        },
        {
          answer: '3',
          type: ['2']
        }
      ]
    }
  ]

  const RSES = [{
      q: 'E',
      a: [{
          answer: '0',
          type: []
        },
        {
          answer: '1',
          type: []
        },
        {
          answer: '2',
          type: []
        },
        {
          answer: '3',
          type: []
        },
        {
          answer: '4',
          type: []
        }
      ]
    },
    {
      q: 'F',
      a: [{
          answer: '0',
          type: []
        },
        {
          answer: '1',
          type: []
        },
        {
          answer: '2',
          type: []
        },
        {
          answer: '3',
          type: []
        },
        {
          answer: '4',
          type: []
        }
      ]
    }
  ]
</script>

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