Edit in JSFiddle


const KANA = {
	"normal": {
		"src": {
			"hiragana":"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんぁぃぅぇぉヵヶっゃゅょゎ。、「」ー",
			"katakana":"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォヵヶッャュョヮ。、「」ー",
		},
		"dst": "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォヵヶッャュョワ。、「」-",
		"suffix" : ""
	},
	"dakuon": {
		"src" : {
            "hiragana": "がぎぐげござじずぜぞだぢづでどばびぶべぼゔ",
			"katakana": "ガギグゲゴザジズゼゾダヂヅデドバビブベボヴ",
		},
		"dst":"カキクケコサシスセソタチツテトハヒフヘホウ",
		"suffix" : "゙"
	},
	"handakuon": {
		"src": {
			"hiragana": "ぱぴぷぺぽ",
			"katakana": "パピプペポ",
		},
		"dst" : "ハヒフヘホ",
		"suffix" : "゚"
	}
};


document.getElementById("run").addEventListener("click", (e) => {
	var input = document.getElementById("src")
	var output = document.getElementById("dst")
	var type = document.getElementById("kana-type")
	
	output.value = ""
	
	var zenkaku = []
	var hankaku = []

	for (var key1 in KANA) {
		var src = KANA[key1].src
		var dst = KANA[key1].dst
		var suffix = ""

		if (KANA[key1].suffix) {
			suffix = KANA[key1].suffix
		}

		for (var key2 in src) {
			if (type.value === "all" || key2 === type.value) {
				var row = src[key2]
				for (var j = 0; j < row.length; j++) {
					zenkaku.push(row[j] + suffix)
					hankaku.push(dst[j] + suffix)
				}
			}
		}
	}

	input.value.split("").forEach((e) => {
		for (var i = 0; i < zenkaku.length; i++) {
			if (zenkaku[i] == e) {
				output.value += hankaku[i]
				return
			}
		}
		output.value += e
	})
})