Ani*_*pta 2 javascript prototype
我想对数组中的每个项目进行编号,如下所示:
["hello", "hi", "hey"].number()
> ["1. hello", "2. hi", "3. hey"]
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
Array.prototype.number = function () {
var tempNum = this;
for (i in this) {
tempNum[i] = tempNum[(i + 1)] + ". " + tempNum[i]
}
return tempNum;
}
Run Code Online (Sandbox Code Playgroud)
但这是输出:
["hello", "hi", "hey"].number()
> ["undefined. hello", "undefined. hi", "undefined. hey"]
Run Code Online (Sandbox Code Playgroud)
为什么?我应该如何实现这一点,为什么我的代码不起作用?
我想你想要这样的东西:
for(var i=0, len = this.length; i<len; i++){
tempNum[i] = (i + 1) + ". " + tempNum[i];
}
Run Code Online (Sandbox Code Playgroud)
tempNum当你不应该在你的等式的右边时,你正在使用.你得到"未定义"的原因是因为在你当前的等式中你得到的索引超出了数组的长度.
ES5方式:
Array.prototype.number = function () {
return this.map( function ( value, i ) {
return ( i + 1 ) + '. ' + value;
});
};
Run Code Online (Sandbox Code Playgroud)
现场演示: http ://jsfiddle.net/XSYTK/1/
您需要为IE8填充.map().