将数组推到大写

时间:2013-06-08 10:32:07

标签: javascript

Array.prototype.myUcase=function()
{
    for (i=0;i<this.length;i++)
    {
        this[i]=this[i].toUpperCase();
    }
}

var fruits=["banana","sermnb","kiwi"];

function myFunction()
{
    fruits.push("hakki").myUcase();
    var x=document.getElementById("demo");
    x.innerHTML=fruits;
}

我想要推送最后一个推送的数组。上面的代码不起作用。

5 个答案:

答案 0 :(得分:3)

这一行:

fruits.push("hakki").myUcase();

...在数组上调用push,然后尝试在myUcase的返回值上调用push。但是push的返回值是一个数字(数组的新长度),而不是对数组的引用。

目前还不清楚你要做什么,但你可以在推动它之前将字符串大写:

fruits.push("hakki".toUpperCase()); // I assume the string is actually in a variable.

...或者稍后在您完成推送时调用myUcase

fruits.myUcase();
x.innerHTML=fruits;

旁注:您的i函数中的任何地方都不会声明myUcase。这意味着你正在成为The Horror of Implicit Globals的牺牲品。声明:

Array.prototype.myUcase = function() {
    var i; // <=== Declaration
// ...

答案 1 :(得分:1)

fruits.push("hakki");
fruits.myUcase();

push返回项目添加后的数组长度。

顺便说一句,除非你知道你在做什么,否则开始修改原生对象的原型可能不是一个好主意。可以通过其他方式获得相同的结果:

fruits = fruits.map(function(str){
    return str.toUpperCase();
    });

答案 2 :(得分:0)

push返回更新数组的长度。您无法在其上拨打myUcase

答案 3 :(得分:0)

如果您需要“UCase”中的“Last”条目,则:

<script>
    Array.prototype.myUcase=function()
    {
    //for (i=0;i<this.length;i++)
   // {
    //this[i]=this[i].toUpperCase();
   // }
this[this.length-1]=this[this.length-1].toUpperCase();
    }

    var fruits=["banana","sermnb","kiwi"];

    function myFunction()
    {
    fruits.push("hakki");
    fruits.myUcase();
    var x=document.getElementById("demo");
    x.innerHTML=fruits;
    }
   </script>

答案 4 :(得分:0)

这是符合您当前方法的替代方案。

Array.prototype.pushUpperCase = function(s) {
    this.push(s.toUpperCase());
};

你的调用将是......

fruits.pushUpperCase("hakki");

您是否想要,需要或应该在容器中添加字符串操纵器是另一个问题。