The JS object array is sorted by attributes quickly

Source: Internet
Author: User

In the previous article "about selector performance competition" mentioned, visual feel in $ ("div,p,a") such a comma, sizzle time-consuming anomaly (more than 600 elements, took 200ms), said that it may not be optimized under IE sorting.
According to the recommended program under IE ran under, indeed, the sequencing time is very small.

123456789101112131415161718192021222324252627282930313233343536 /** 快速排序,按某个属性,或按“获取排序依据的函数”,来排序.* @method soryBy* @static* @param {array} arr 待处理数组* @param {string|function} prop 排序依据属性,获取* @param {boolean} desc 降序* @return {array} 返回排序后的新数组*/varsortBy =function(arr, prop, desc){    varprops=[],    ret=[],    i=0,    len=arr.length;    if(typeofprop==‘string‘) {        for(; i<len; i++){            varoI = arr[i];            (props[i] = newString(oI && oI[prop] || ‘‘))._obj = oI;        }    }    elseif(typeofprop==‘function‘) {        for(; i<len; i++){            varoI = arr[i];            (props[i] = newString(oI && prop(oI) || ‘‘))._obj = oI;        }    }    else{        throw‘参数类型错误‘;    }    props.sort();    for(i=0; i<len; i++) {        ret[i] = props[i]._obj;    }    if(desc) ret.reverse();    returnret;};

Array native sort, when it passes a comparison function, because of its internal use of which sort algorithm, all need to be compared, so, time-consuming is very natural.
Above the quick sort, and it's not multiple times,
But:
1. Takes the El attribute value, produces a string object with the attribute value,
2. Attach the El to the string object.
3. Arrays are made up of string objects.
4. Sorts the array of string objects in the native sort.
5. In the ordered string array, the El is removed sequentially.
That is to get the sequence of the El array.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.