题目大概是:有一个名为priorityList的列表,向列表项中加入列表参数。例如priorityList.add("item1",5);其中第一个数是列表参数。第二个是权重。根据输入列表项中的各项的权重,对列表项进行有序的输出。
比如:priorityList.add("item1",5);
priorityList.add("item2",1);
向列表中加入两项。最终利用priorityList.print()按照输入列表项的权重输出"item2","item1";
分析一下:对于列表项,我们可以使用javascript中的Array来存放对应的列表项。但是Array数组类型中没有add以及print的方法,所以我们需要自己创建这样的新功能。所以我们可以使用Array.prototype构造原型对象的方法,构造Array构造函数的新的可以继承的方法add和print。然后就是基本的一些数据类型的转换以及排序的问题。现将对应的函数清单列如下:
Array.prototype={
add:function(str,num){
var a=new Array();
a.push(arguments[0]);
a.push(arguments[1]);
var result=a.toString();
this[this.length]=result.split(",")[0];
this[this.length]=result.split(",")[1];
return this;
},
print:function(){
var b=new Array();
var num1=0,index=0;
for(var i=1;i<this.length;i=i+2){
b[num1++]=this[i];
}
b=b.sort(function(x,y){return x-y;});
for(var j=0;j<this.length/2;j++){
for(i=1;i<this.length;i=i+2){
if(this[i] == b[index]){
b[index]=this[i-1];
index++;
}
}
}
return b;
}
}
var priorityList=new Array();
priorityList.add("item1",5);
priorityList.add("item2",1);
priorityList.add("item3",8);
priorityList.add("item4",3);
console.log(priorityList.print());
这样就可以基本上实现上述的功能。