好吧,我偷偷怀疑我忽略了一些非常简单的东西,但是我遇到了以下代码的问题:
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
回调函数中的值或至少返回正确/新数组?提前致谢。