කාර්ය සාධනය පමණක්! මෙම කේතය මෙහි ඇති සියලුම කේත වලට වඩා 10X වේගවත් වේ * සියලුම බ්රව්සර්වල ක්රියා කරන අතර අවම මතක බලපෑමක් ඇති කරයි .... සහ තවත්
ඔබට පැරණි අරාව නැවත භාවිතා කිරීමට අවශ්ය නොවන්නේ නම්, btw ඔබ එය අද්විතීය බවට පරිවර්තනය කිරීමට පෙර අවශ්ය වෙනත් මෙහෙයුම් සිදු කරන්න මෙය බොහෝ විට වේගවත්ම ක්රමය වන අතර එය ඉතා කෙටි වේ.
var array=[1,2,3,4,5,6,7,8,9,0,1,2,1];
එවිට ඔබට මෙය උත්සාහ කළ හැකිය
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 1];
function toUnique(a, b, c) { //array,placeholder,placeholder
b = a.length;
while (c = --b)
while (c--) a[b] !== a[c] || a.splice(c, 1);
return a // not needed ;)
}
console.log(toUnique(array));
//[3, 4, 5, 6, 7, 8, 9, 0, 2, 1]
මම මෙම ලිපිය කියවමින් මෙම ලිපිය කියවමි ...
http://www.shamasis.net/2009/09/fast-algorithm-to-find-unique-items-in-javascript-array/
මම ලූපයට කැමති නැහැ. එයට බොහෝ පරාමිතීන් ඇත. අප සැවොම කැමති ක්රෝම් හැර අනෙක් සියලුම බ්රව්සර්වල වේගවත්ම ලූපය වන අතර
කෙසේ වෙතත් මම භාවිතා කරන පළමු ශ්රිතය ලිවීය. ඔව් එය ලිපියේ ඇති ශ්රිතයට වඩා ටිකක් වේගවත්ය.නමුත් එය ප්රමාණවත් නොවේ.unique2()
ඊළඟ පියවර නවීන js භාවිතා කරන්න. Object.keys
මම අනෙක් ලූපය js1.7 හි Object.keys සමඟ ආදේශ කළෙමි ... ටිකක් වේගවත් හා කෙටි (ක්රෝම් 2x වේගයෙන්);). මදි!. unique3()
.
මේ අවස්ථාවේදී මම කල්පනා කරමින් සිටියේ මගේ අද්විතීය ක්රියාකාරිත්වයේ ඇත්ත වශයෙන්ම මට අවශ්ය දේ ගැන ය. මට පැරණි අරාව අවශ්ය නැත, මට වේගවත් ශ්රිතයක් අවශ්යය. ඒ නිසා මම ලූප් + ස්ප්ලයිස් අතර 2 ක් භාවිතා කළෙමි.unique4()
මා පුදුමයට පත් වූ බව කීම නිෂ් less ල ය.
ක්රෝම්: සුපුරුදු පරිදි තත්පරයට මෙහෙයුම් 150,000 ක් තත්පරයට මෙහෙයුම් 1800 ක් දක්වා ඉහළ ගියේය.
එනම්: 80,000 op / s එදිරිව 3,500,000 op / s
ios: 18,000 op / s vs 170,000 op / s
සෆාරි: 80,000 op / s vs 6,000,000 op / s
සාධනය
http://jsperf.com/wgu හෝ වඩා හොඳින් භාවිතා කරන්න console.time ... මයික්රෝ ටයිම් ... ඕනෑම දෙයක්
unique5()
ඔබට පරණ අරාව තබා ගැනීමට අවශ්ය නම් කුමක් සිදුවේද යන්න පෙන්වීමට පමණි.
ඔබ Array.prototype
කරන්නේ කුමක්දැයි ඔබ නොදන්නේ නම් භාවිතා නොකරන්න . මම පිටපත් හා අතීතය වෙනස් කළා. Object.defineProperty(Array.prototype,...,writable:false,enumerable:false})
ඔබට ස්වදේශීය මූලාකෘතියක් සෑදීමට අවශ්ය නම් භාවිතා කරන්න. උදාහරණය: https://stackoverflow.com/a/20463021/2450730
ආදර්ශනය
http://jsfiddle.net/46S7g/
සටහන: මෙම මෙහෙයුමෙන් පසු ඔබගේ පැරණි අරාව විනාශ වී ඇත / බවට පත්වේ.
ඔබට ඉහත කේතය කියවීමට නොහැකි නම්, ජාවාස්ක්රිප්ට් පොතක් කියවන්න හෝ කෙටි කේතය පිළිබඳ පැහැදිලි කිරීම් කිහිපයක් මෙන්න. https://stackoverflow.com/a/21353032/2450730
සමහරු භාවිතා කරති indexOf
... එපා ... http://jsperf.com/dgfgghfghfghghgfhgfhfghfhgfh
හිස් අරා සඳහා
!array.length||toUnique(array);