ktsnd-test-ja
Version:
KTSND (Kano Test for Social Nicotine Dependence) in Japanese
80 lines (62 loc) • 2.48 kB
JavaScript
var KTSND = {
/**
質問一覧を返す
@method getQuestions
@return {Array(String)}
*/
getQuestions: function() {
return [
'タバコを吸うこと自体が病気である。',
'喫煙には文化がある。',
'タバコは嗜好品(しこうひん:味や刺激を楽しむ品)である。',
'喫煙する生活様式も尊重されてよい。',
'喫煙によって人生が豊かになる人もいる。',
'タバコには効用(からだや精神に良い作用)がある。',
'タバコにはストレスを解消する作用がある。',
'タバコは喫煙者の頭の働きを高める。',
'医者はタバコの害を騒ぎすぎる。',
'灰皿が置かれている場所は、喫煙できる場所である。'
];
},
/**
indexで与えられた質問の選択肢を返す
実際は質問内容によらず 同一の4択を返す
@method getChoices
@param {Number} qsIndex 質問票のインデックス 0, 1, 2, ...
@return {Array(String)}
*/
getChoices: function(qsIndex) {
return [ 'そう思う', 'ややそう思う', 'あまりそう思わない', 'そう思わない' ]
},
/**
qsIndexに相当する質問に対してanswerIndexと答えたときに、どういう点数になるのか。
@method getScore
@param {Array(Number)} answerIndex 選んだ選択肢のインデックスの配列(質問順)
@return {Number} 点数
*/
getScore: function(qsIndex, answerIndex) {
if (qsIndex === 0) {
return answerIndex;
}
else {
return 3 - answerIndex;
}
},
/**
indexで与えられた選択肢の配列から、点数を計算する
@method calculate
@param {Array(Number)} answerIndexes 選んだ選択肢のインデックスの配列(質問順)
@return {Number} 点数
*/
calculate: function(answerIndexes) {
if (answerIndexes.length !== 10) {
throw new Error('引数の長さが10でない');
}
// Q1 のみ、qsIndexの通りの点数, Q2~Q10は 3 - qsIndex
return answerIndexes.reduce(function(total, answerIndex, qsIndex) {
var point = KTSND.getScore(qsIndex, answerIndex);
return total + point;
}, 0);
}
};
module.exports = KTSND