Javascript 根据项目索引追加顺序后缀(';-st';、';-nd';、';-rd';、';-th';)
比如说,我有一个选项值数组,比如:Javascript 根据项目索引追加顺序后缀(';-st';、';-nd';、';-rd';、';-th';),javascript,arrays,string,Javascript,Arrays,String,比如说,我有一个选项值数组,比如: var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; 我需要将其转换为格式化字符串数组,如: var result = ['1-st option is "a"', '2-nd option is "b", '3-rd option
var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
我需要将其转换为格式化字符串数组,如:
var result = ['1-st option is "a"', '2-nd option is "b", '3-rd option is "c"', '4-th option is "d"',...];
我通过以下方式实现了大部分目标:
var result = [];
for(var i = 0; i < arr.length; i++){
result.push((i+1)+' option is "'+arr[i]+'"');
}
var结果=[];
对于(变量i=0;i
它生成字符串,如1选项是“a”
,依此类推。
但我似乎无法处理这些后缀('-st','-nd','-rd','-th')。你们能帮我解决这个问题吗?谢谢 试试这个:
常数arr=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“y”、“z”];
常量后缀(n)=>([“st”,“nd”,“rd”][((n+90)%100-10)%10-1]| |“th”)
const result=arr.map((res,i)=>`${i+1}-${(i+1)}选项的序数_后缀_为${res}`);
控制台日志(结果)代码>您可以将必要的后缀放入数组中,然后选择与索引对应的后缀:
const arr=[…'abcdefghijklmnopqrstuvxyz'];
常量后缀=['th','st','nd','rd'];
const result=arr.map((项目,i)=>
(idx=~(i%10)+1>3 | | ~~(i/10)==1?0:~(i%10)+1,
`${i+1}-${后缀[idx]}选项为${item}`);
控制台日志(结果)代码>
.as控制台包装{min width:100%}
试试这个代码,它可以工作:
-st与以1结尾的数字一起使用(例如,1st,发音为first)
-nd与以2结尾的数字一起使用(例如92nd,发音为九十二)
-rd与以3结尾的数字一起使用(例如33,发音为三十三)
作为上述规则的例外,所有以11、12或13结尾的“青少年”数字都使用-th(例如,第11、第11、第112、第100[和]第12)
-th用于所有其他数字(例如,第9个,发音为第9个)
var arr=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“y”、“z”];
函数addSuffix(i){
var j=i%10,
k=i%100;
如果(j==1&&k!=11){
返回i+“-st”;
}
如果(j==2&&k!=12){
返回i+“-nd”;
}
如果(j==3&&k!=13){
返回i+“-rd”;
}
返回i+“-th”;
}
var结果=[];
对于(变量i=0;i 控制台日志(结果)
您可以创建一个模为%
的函数来为您处理该问题,例如:
function calc_suffix(number) {
let rest = number % 10;
if(rest === 1 && number != 11) { return 'st'; }
else if(rest === 2 && number != 12) { return 'nd'; }
else if(rest === 3 && number != 13) { return 'rd'; }
else { return 'th'; }
}
最终结果如下所示:
var result = [];
for(var i = 0; i < arr.length; i++){
result.push((i+1) + "-" + calc_suffix(i+1) + " option is "'+arr[i]+'"');
}
var结果=[];
对于(变量i=0;i
你所有的结果都是-st
这并不能回答问题。阅读,OP在问什么for@GhoulAhmed当前位置:我喜欢你文章的当前编辑,因此我对它投了赞成票,尽管它看起来仍然比我的有点高;)请描述,这段代码将如何回答这个问题,以帮助其他人理解这个答案在100多个站点中测试了这个问题long女士。回答得好。我接受你的回答,因为这是第一个提供所需输出的答案。既然@Ghoul Ahmed已经编辑了他的帖子,它看起来也很紧凑和高效,我本可以对此进行投票,但我的声誉记录不足以满足这一特权:(@U25lYWt5IEJhc3RhcmQg,你的解决方案最快,所以我投票:)