JavaScript——关于列表权重的笔试题

本文介绍了一种使用JavaScript自定义Array的add和print方法,实现根据列表项权重进行排序输出的方法。通过构造Array.prototype来添加新功能,实现了列表项的添加与按权重排序输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天晚上参加某公司的校招笔试的最后一题,由于时间上的问题导致自己在做最后一道题的时候总感觉力不从心,明明会的问最终还是没有写出完整的最终结果。我还不相信了,于是今天下午花了点时间整理了一下,将答案最终完整的写了出来。先贴在下面,仅供后来的人参考。(由于楼主实力有限,如果不妥请见谅)

题目大概是:有一个名为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());

这样就可以基本上实现上述的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值