java 数组排序面试题_前端面试题-数组去重和排序

首先,不好意思,我昨天偷懒了,没有更新面试题,今日补上昨日的锅。

基于上次的对象转化题目,不少同学指出对象种的数组如果长度不一样,不能满足功能,所以针对这个进行优化,代码如下所示:

};functiongetArr(obj) {if (typeof obj != "object") {

console.warn("参数不正确");return;

}

const arr=[];//遍历对象的每一个对象

for (var item inobj) {if (obj.hasOwnProperty(item) === true) {//map取对象每一个total对应的值取赋值

obj[item].map((i, index) =>{if (!arr[index]) {

arr[index]=[];

}

arr[index].push(obj[item][index]);

});

}

}returnarr;

}

console.log(getArr(obj));

如果你有不同的方法,或者更好的方法请来信(email:785784961@qq.com)

这里需要注意的是:

1.封装函数的入参类型判断,并且给出友好的提示,比如警告,或者入参示例

2.使用for in 遍历对象会遍历原型链,需要我们判断一下

3.对于遍历中新生成的数组要判断是否有没有

4.开发代码中调试时,尽量使用console.log()来打印值,减少alert()使用

5.封装插件要写好readme,或者在js中写好注释

6.可以的化,建议使用包管理,实现安装操作,即npm发布

进入数组去重的操作,看一下题目

//2019-3-5 今日面试题,数组去重

let m = [1, 2, 2],

n= [2, 3, 3];//返回 m 和n 的不重复的元素,并且按照从小到大排序

let arr = [1,2,3]

这道题的考查点:

1.数组的合并

2.数组排序

3.数组去重

首先我们进入es6快速实现的过程,定义一个箭头函数,使用new Set 合并数组,再用sort方法去排序,最后Array.from生成新的数组,就可以搞定了

//2019-3-5 今日面试题,数组去重

let m = [1, 2, 2],

n= [2, 3, 3];//返回 m 和n 的不重复的元素,并且按照从小到大排序

const func= (m, n) =>Array.from(new Set(m.concat(n))).sort((a, b) => a -b);

console.log(func(m, n));

第二种:常规的方法es5

//2019-3-5 今日面试题,数组去重

let m = [1, 2, 2],

n= [2, 3, 3];//返回 m 和n 的不重复的元素,并且按照从小到大排序

//第二种方法

functiongetArr(m, n) {for (var i = 0; i < n.length; i++) {if (m.indexOf(n[i]) < 0) {

m.push(n[i]);

}

}var arr =[];for (var l = 0; l < m.length; l++) {if (arr.indexOf(m[l]) == -1) {

arr.push(m[l]);

}

}

arr= arr.sort(function(x, y) {return x -y;

});returnarr;

}

console.log(getArr(m, n));

如果降序的话的第二种交互sort中y-x就好了

//2019-3-5 今日面试题,数组去重

let m = [1, 2, 2],

n= [2, 3, 3];//返回 m 和n 的不重复的元素,并且按照从小到大排序

//第二种方法

functiongetArr(m, n) {for (var i = 0; i < n.length; i++) {if (m.indexOf(n[i]) < 0) {

m.push(n[i]);

}

}var arr =[];for (var l = 0; l < m.length; l++) {if (arr.indexOf(m[l]) == -1) {

arr.push(m[l]);

}

}

arr= arr.sort(function(x, y) {return y-x;

});returnarr;

}

console.log(getArr(m, n));

注意:

1.这里我们没有判断入参类型,需要调用函数时注意一下,需要是数组类型

2.日常开发中,前端和后端会约定数据类型,一般不会改变类型,所以我们可以省略类型判断,减少数据处理的时间

3.需要考虑的点,上面数组量数据过大如何处理,如何快速排序

2019-3-6面试题

//2019-3-6 面试题,时间格式转化

let data={

create_time:'2019-02-05T08:14:28.000Z'};//将上面的时间进行格式化,按照入参形式返回一下3种形式

//第一种

let time1 = '2019-02-05'

//第二种

let time2 = '2019-02-05 08:14:28'

//第三种

let time3= '2019年02月05日 上午8点14分'

//请在下面函数补充完整

functiongetTime(time,type){

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值