javascript与prototype js冲突

javascript与prototype js冲突,javascript,jquery,asp.net,prototypejs,Javascript,Jquery,Asp.net,Prototypejs,我有下面一段代码,在我将Prototype.js包含到页面中之后,这段代码就开始崩溃了 function JsonArrayByProperty(objArray, prop, direction) { if (arguments.length < 2) throw new Error("sortJsonArrayByProp requires 2 arguments"); var direct = arguments.l

我有下面一段代码,在我将Prototype.js包含到页面中之后,这段代码就开始崩溃了

          function JsonArrayByProperty(objArray, prop, direction) {
            if (arguments.length < 2) throw new Error("sortJsonArrayByProp requires 2 arguments");
            var direct = arguments.length > 2 ? arguments[2] : 1; //Default to ascending

            if (objArray && objArray.constructor === Array) {
                var propPath = (prop.constructor === Array) ? prop : prop.split(".");
                objArray.sort(function (a, b) {
                    for (var p in propPath) {
                        if (a[propPath[p]] && b[propPath[p]]) {
                            a = a[propPath[p]];
                            b = b[propPath[p]];
                        }
                    }
                    a = a.match(/^\d+$/) ? +a : a;
                    b = b.match(/^\d+$/) ? +b : b;
                    return ((a < b) ? -1 * direct : ((a > b) ? 1 * direct : 0));
                });
            }
        }
函数JsonArrayByProperty(对象、属性、方向){
if(arguments.length<2)抛出新错误(“sortJsonArrayByProp需要2个参数”);
var direct=arguments.length>2?参数[2]:1;//默认为升序
if(objArray&&objArray.constructor==数组){
变量propPath=(prop.constructor==数组)?prop:prop.split(“.”);
排序(函数(a,b){
for(propPath中的var p){
if(a[propPath[p]]和&b[propPath[p]]{
a=a[propPath[p]];
b=b[propPath[p]];
}
}
a=a.match(/^\d+$/)?+a:a;
b=b.match(/^\d+$/)?+b:b;
返回((ab)?1*直接:0));
});
}
}
它错误地在下面几行中断

   Uncaught TypeError: Object #<Object> has no method 'match' 

   a = a.match(/^\d+$/) ? +a : a;
   b = b.match(/^\d+$/) ? +b : b;
uncaughttypeerror:对象#没有方法“匹配”
a=a.match(/^\d+$/)+a:a;
b=b.match(/^\d+$/)+b:b;

您的问题很可能从这一行开始:

for (var p in propPath) {
一旦将prototype.js添加到页面中,就不能使用常见(但不正确)的快捷方式,即使用
for(foo in bar)
对数组进行迭代。这是因为数组元素不再是简单的字符串或浮点数,它们是成熟的“扩展”对象,如果您正确地对它们进行迭代,它们的计算结果恰好会返回到字符串或浮点数

for(var i = 0; i < propPath.length; i++) {
for(变量i=0;i

将使您回到正轨。

您的问题很可能从以下几行开始:

for (var p in propPath) {
一旦将prototype.js添加到页面中,就不能使用常见(但不正确)的快捷方式,即使用
for(foo in bar)
对数组进行迭代。这是因为数组元素不再是简单的字符串或浮点数,而是完全“扩展”的对象,如果您正确地对它们进行迭代,它们的计算结果将返回到字符串或浮点值

for(var i = 0; i < propPath.length; i++) {
for(变量i=0;i

将使您回到正轨。

您的问题很可能从以下几行开始:

for (var p in propPath) {
一旦将prototype.js添加到页面中,就不能使用常见(但不正确)的快捷方式,即使用
for(foo in bar)
对数组进行迭代。这是因为数组元素不再是简单的字符串或浮点数,而是完全“扩展”的对象,如果您正确地对它们进行迭代,它们的计算结果将返回到字符串或浮点值

for(var i = 0; i < propPath.length; i++) {
for(变量i=0;i

将使您回到正轨。

您的问题很可能从以下几行开始:

for (var p in propPath) {
一旦将prototype.js添加到页面中,就不能使用常见(但不正确)的快捷方式,即使用
for(foo in bar)
对数组进行迭代。这是因为数组元素不再是简单的字符串或浮点数,而是完全“扩展”的对象,如果您正确地对它们进行迭代,它们的计算结果将返回到字符串或浮点值

for(var i = 0; i < propPath.length; i++) {
for(变量i=0;i

会让你回到正轨的。

好吧,显然
a
b
是对象,不是字符串……好吧,显然
a
b
是对象,不是字符串……好吧,显然
a
b
是对象,不是字符串……好吧,显然
a
b
是对象,不是字符串anks mate…原来这个函数的调用是JSON.stringfy(xxxx)与原型不兼容的老问题出现的罪魁祸首,出于您提到的原因,我将不得不对现有代码进行更改。代码在调用函数'var finalData=jQuery.parseJSON(JSON.stringify)的这一行中弄乱了数组(someData));“这里有一个很好的页面:——阅读关于不使用for/in循环数组的部分。如果你重构代码使用
yourArray.each()
,你会过得更愉快。谢谢你,伙计……原来这是JSON.stringfy(xxxx)的老问题的罪魁祸首由于您提到的原因,无法使用prototype,我将不得不对现有代码进行更改。代码在调用函数“var finalData=jQuery.parseJSON(JSON.stringify(someData))的这一行中弄乱了数组这里有一个很好的页面:--阅读关于不使用for/in在数组上循环的部分。如果您重构代码以使用
yourArray.each()
,您将有一个更愉快的时光。谢谢,伙计……原来这一调用函数是JSON.stringfy(xxxx)这个古老问题的罪魁祸首由于您提到的原因,无法使用prototype,我将不得不对现有代码进行更改。代码在调用函数“var finalData=jQuery.parseJSON(JSON.stringify(someData))的这一行中弄乱了数组这里有一个很好的页面:--阅读关于不使用for/in在数组上循环的部分。如果您重构代码以使用
yourArray.each()
,您将有一个更愉快的时光。谢谢,伙计……原来这一调用函数是JSON.stringfy(xxxx)这个古老问题的罪魁祸首由于您提到的原因,无法使用prototype,我将不得不对现有代码进行更改。代码在调用函数“var finalData=jQuery.parseJSON(JSON.stringify(someData))的这一行中弄乱了数组这里有一个很好的页面:--阅读关于不使用for/in循环数组的部分。如果您重构代码以使用
yourArray.each()
,您将有一个更快乐的时间。