CVTE-2021年春-web前端开发实习岗-在线笔试(6)

CVTE-2021年春-web前端开发实习岗-在线笔试(6)

昨天晚上7点到8点半进行了CVTE的笔试,7点半后不可入场,试卷共27道题,2道编程题,25道不定项选择题。现在来总结一下。
1、第一道编程题:
实现一个函数,传入数组长度n,输出一个n*n的二维数组。
要求:二维数组中的每一个值为Math.random()*n并且保留一位小数,二维数组每一行需要正序排列。
列如toCustomArray(3);
输出:
[
[1.3, 2.4, 2.9],
[1.2, 1.8, 2.6],
[0.1, 0.4, 2.5]
]
代码实现:

function toCustomArray(n){
  var arr = [];//创建一维数组
  for(let i = 0; i < n; i++){
    arr[i] = [];//创建二维数组
    for(let j = 0; j < n; j++){
      arr[i][j]=(Math.random()*n).toFixed(1);//随机数保留一位小数
    }
    for(let k = 0; k < n; k++){
      arr[i].sort(function(a,b){//数组正序排序
        return a-b;
      });
    }
  }
  console.log(arr);
}
toCustomArray(3);

2、第二道编程题:
写一个方法equal()比较两个变量的值是否相等。
要求:
如果是基础类型,要求值全等,
如果是引用类型,要求遍历的所有值全等。
例如:
1、var a=1,b=1,c=‘1’;
equal(a,b)//true
equal(a,c)//false
2、var a={a:‘a’, b:‘b’}, b={a:‘a’, b:‘b’}, c={a:‘a’};
equal(a,b)//true
equal(a,c)//false
3、var a=[1,2], b=[1,2], c={0:1, 1:2};
equal(a,b)//true
equal(a,c)//false
思路:
所有情况统一处理,先判断两个参数长度是否相等(数组有长度属性,对象和基础类型变量没有长度属性,从而区分出数组、对象和基础类型变量),
若不等直接返回false,若相等则获取两个参数的所有键值数组,再次判断两数组的长度是否相等,若不等直接返回false。若相等则循环判断数组的值是否相等

function equal(a, b) {
    // 判断数组的长度
    if (a.length !== b.length) {
        return false
    } else {
    	let keysOne = Object.keys(a); // 获取对象1所有键数组
    	let keysTwo = Object.keys(b); // 获取对象2所有键数组
    	if (keysOne.length !== keysTwo.length) return false; 
        // 循环遍历数组的值进行比较
        for (let i = 0; i < a.length; i++) {
            if (a[i] !== b[i]) {
                return false
            }
        }
        return true;
    }
}
/*
var a=1,b=1,c='1';
equal(a,b)//true
equal(a,c)//false
*/
var a={a:'a', b:'b'}, b={a:'a', b:'b'}, c={a:'a'};
equal(a,b)//true
equal(a,c)//false
/*
var a=[1,2], b=[1,2], c={0:1, 1:2};
equal(a,b)//true
equal(a,c)//false
*/

以上代码参考
js中的传值和传引用,判断两个数组是否相等

JS对比两个对象键值全等
3、总结:
总体来说第一题相对简单,第二题需要比较的情况多,相对难,希望xdm能够给出更好的答案,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值