У меня есть некоторый код, который работает, но мне было бы интересно, если бы кто-нибудь мог просмотреть его и сказать, есть ли более эффективный способ достижения моей цели.
Я получаю информацию от источника данных как массив, такой как ["Y", "Y" ,, "Y", "Y" ,, "Y"].
Значения относятся к именам инвестиционных фондов, и я вывожу строку типа " Сбалансированный, Ca sh, параметры High Growth, Moderate и Growth ".
Если есть только одно значение, заполненное" Y ", строка может быть" Conservative option ".
Если есть два значения, строка может быть «Опции консервативного и Ca sh».
Для более чем двух значений строка может быть «Опции консервативного, Ca sh и Moderate».
Я знаю, что порядок значений всегда будет одинаковым, например, первое значение всегда будет сбалансированным. Вот код:
// balanced, cash, high growth, moderate and growth
var params = ["Y","Y",,"Y","Y",,"Y"];
getString(params)
function getString(values) {
// map for the values
var fundMap = {
0: "Balanced",
1: "Cash",
2: "Conservative",
3: "High Growth",
4: "Moderate",
5: "Shares",
6: "Growth"
}
var fundArray = [];
// get fund names from map and push to array
for (var i = 0; i < values.length; i++) {
if (values[i] == "Y") {
fundArray.push(fundMap[i]);
}
}
console.log(fundArray);
var fundString = "";
if (fundArray.length == 1) {
fundString = fundArray + " option";
}
else if (fundArray.length == 2) {
fundString = fundArray[0] + " and " + fundArray[1] + " options";
}
else {
for (var i = 0; i < fundArray.length -2; i++) {
fundString = fundString + fundArray[i] + ", ";
}
fundString = fundString + fundArray[fundArray.length -2] + " and ";
fundString = fundString + fundArray[fundArray.length -1] + " options";
}
console.log(fundString);
}
Я хотел бы знать, если есть более эффективный или более аккуратный способ написания этого кода, пожалуйста.
Спасибо!