-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathutils.js
63 lines (55 loc) · 1.79 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*******************
* Team Member Permissions
********************/
exports.memberPermission = {
REJECTED_MEMBER: -2,
APPLY_MEMBER: -1,
APPROVED_MEMBER: 0,
MASTER_MEMBER: 1
};
/*******************
* Make Test Content
********************/
exports.makeTestContent = (test_array) => {
const test_content = {
test: []
};
const answer_list = [];
// 답변 리스트 생성
test_array.forEach((question) => {
answer_list.push(question.answer);
});
for (let i=0; i<answer_list.length; i++) {
const answer_list_temp = []; // 보기들의 리스트를 만들기 위한 정답 리스트의 복사본
test_array.forEach((question) => {
answer_list_temp.push(question.answer);
});
const answer = answer_list_temp.splice(i, 1)[0]; // 정답을 제외한 보기들의 리스트
const options_list = answer_list_temp;
const shuffle_option = {
rand: '',
temp: '',
len: options_list.length,
result: options_list.slice()
};
// 보기 랜덤 섞기
while (shuffle_option.len) {
shuffle_option.rand = Math.floor(Math.random() * shuffle_option.len--);
shuffle_option.temp = shuffle_option.result[shuffle_option.len];
shuffle_option.result[shuffle_option.len] = shuffle_option.result[shuffle_option.rand];
shuffle_option.result[shuffle_option.rand] = shuffle_option.temp;
}
const answer_index = Math.floor(Math.random() * 4);
shuffle_option.result.splice(answer_index, 0, answer); // 인덱스 0 ~ 3 사이에 정답 삽입
// 시험지에 문제 삽입
test_content.test.push(
{
question: test_array[i].question,
options: shuffle_option.result.slice(0, 4),
answer: answer,
answer_index: answer_index
}
);
}
return JSON.stringify(test_content);
};