📄 sortedlist.js
字号:
if(!dojo._hasResource["dojox.collections.SortedList"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.collections.SortedList"] = true;dojo.provide("dojox.collections.SortedList");dojo.require("dojox.collections._base");dojox.collections.SortedList=function(/* object? */ dictionary){ // summary // creates a collection that acts like a dictionary but is also internally sorted. // Note that the act of adding any elements forces an internal resort, making this object potentially slow. var _this=this; var items={}; var q=[]; var sorter=function(a,b){ if (a.key > b.key) return 1; if (a.key < b.key) return -1; return 0; }; var build=function(){ q=[]; var e=_this.getIterator(); while (!e.atEnd()){ q.push(e.get()); } q.sort(sorter); }; var testObject={}; this.count=q.length; this.add=function(/* string */ k,/* object */v){ // summary // add the passed value to the dictionary at location k if (!items[k]) { items[k]=new dojox.collections.DictionaryEntry(k,v); this.count=q.push(items[k]); q.sort(sorter); } }; this.clear=function(){ // summary // clear the internal collections items={}; q=[]; this.count=q.length; }; this.clone=function(){ // summary // create a clone of this sorted list return new dojox.collections.SortedList(this); // dojox.collections.SortedList }; this.contains=this.containsKey=function(/* string */ k){ // summary // Check to see if the list has a location k if(testObject[k]){ return false; // bool } return (items[k]!=null); // bool }; this.containsValue=function(/* object */ o){ // summary // Check to see if this list contains the passed object var e=this.getIterator(); while (!e.atEnd()){ var item=e.get(); if(item.value==o){ return true; // bool } } return false; // bool }; this.copyTo=function(/* array */ arr, /* int */ i){ // summary // copy the contents of the list into array arr at index i var e=this.getIterator(); var idx=i; while(!e.atEnd()){ arr.splice(idx,0,e.get()); idx++; } }; this.entry=function(/* string */ k){ // summary // return the object at location k return items[k]; // dojox.collections.DictionaryEntry }; this.forEach=function(/* function */ fn, /* object? */ scope){ // summary // functional iterator, following the mozilla spec. dojo.forEach(q, fn, scope); }; this.getByIndex=function(/* int */ i){ // summary // return the item at index i return q[i].valueOf(); // object }; this.getIterator=function(){ // summary // get an iterator for this object return new dojox.collections.DictionaryIterator(items); // dojox.collections.DictionaryIterator }; this.getKey=function(/* int */ i){ // summary // return the key of the item at index i return q[i].key; }; this.getKeyList=function(){ // summary // return an array of the keys set in this list var arr=[]; var e=this.getIterator(); while (!e.atEnd()){ arr.push(e.get().key); } return arr; // array }; this.getValueList=function(){ // summary // return an array of values in this list var arr=[]; var e=this.getIterator(); while (!e.atEnd()){ arr.push(e.get().value); } return arr; // array }; this.indexOfKey=function(/* string */ k){ // summary // return the index of the passed key. for (var i=0; i<q.length; i++){ if (q[i].key==k){ return i; // int } } return -1; // int }; this.indexOfValue=function(/* object */ o){ // summary // return the first index of object o for (var i=0; i<q.length; i++){ if (q[i].value==o){ return i; // int } } return -1; // int }; this.item=function(/* string */ k){ // summary // return the value of the object at location k. if(k in items && !testObject[k]){ return items[k].valueOf(); // object } return undefined; // object }; this.remove=function(/* string */k){ // summary // remove the item at location k and rebuild the internal collections. delete items[k]; build(); this.count=q.length; }; this.removeAt=function(/* int */ i){ // summary // remove the item at index i, and rebuild the internal collections. delete items[q[i].key]; build(); this.count=q.length; }; this.replace=function(/* string */ k, /* object */ v){ // summary // Replace an existing item if it's there, and add a new one if not. if (!items[k]){ // we're adding a new object, return false this.add(k,v); return false; // bool }else{ // we're replacing an object, return true items[k]=new dojox.collections.DictionaryEntry(k,v); build(); return true; // bool } }; this.setByIndex=function(/* int */ i, /* object */ o){ // summary // set an item by index items[q[i].key].value=o; build(); this.count=q.length; }; if (dictionary){ var e=dictionary.getIterator(); while (!e.atEnd()){ var item=e.get(); q[q.length]=items[item.key]=new dojox.collections.DictionaryEntry(item.key,item.value); } q.sort(sorter); }}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -