好吧,我偷偷怀疑我忽略了一些非常简单的东西,但是我遇到了以下代码的问题:
Array.prototype.sortArr = function (skey)
{
    var vals = new Array();
    for (key in this)
    {
        if (typeof(this[key][skey]) != 'undefined')
        {
            vals.push((this[key][skey]+'').toLowerCase());
        }
    }
    vals.sort();
    var newArr = new Array();
    for (i=0;i<vals.length;i++)
    {
        for (key in this)
        {
            if (typeof(this[key][skey]) != 'undefined')
            {
                if ((this[key][skey]+'').toLowerCase() == vals[i])
                {
                    newArr.push(this[key]);
                    break;
                }
            }
        }
    }
    return newArr;
}
好的,简而言之,这个函数类似于 sort 函数,不同之处在于它通过多级对象进行排序,并且我指定了它需要排序的键。
问题是我从未真正替换或更改“this”值,这意味着这个函数实际上并没有做任何事情。例如:
var arr = new Array(new Array(1,5),new Array(2,0));
arr.sortArr(1);
它不会改变通话arr之前或之后的情况sortArr(1)。但是,当我alert(newArr)在函数返回之前放置一个权利时,它表明它实际上确实重新排序了。所以,我的问题是;如何替换this回调函数中的值或至少返回正确/新数组?提前致谢。