js考题-算法篇(1)
于2024-02-20 11:56:14发布
62
1. 数组去重
// 1. 用Set的方式
var arr = [1, 2, 3, 3, 4, 5, 6, 6];
console.log(Array.from(new Set(arr)));
// 2. 用includes
var newArr = [];
for (var i = 0; i < arr.length; i++) {
var num = arr[i];
if (!newArr.includes(num)) { // 这里也可以写成if (newArr.indexOf(num) == -1) {
newArr.push(num)
}
}
console.log(newArr)
2. 找出二维数组中每一项的最大值,并组成新的数组
function findMaxNum(arr) {
var maxNumList = [];
for (var i = 0; i < arr.length; i++) {
var temp = 0;
for (var j = 0; j < arr[i].length; j++) {
var num = arr[i][j];
if (num > temp) {
temp = num;
}
}
maxNumList.push(temp);
}
return maxNumList;
}
3. 统计字符串中出现最多次的字母,并且显示出现的次数
var str = 'aaaaabbbbbbbbbbbcccccccdddddddddddddddd'
var obj = {}
var arr = str.split('');
for (var i = 0; i < arr.length; i++) {
var t = arr[i];
if (!obj[t]) {
obj[t] = {
num: 1
}
} else {
obj[t].num += 1
}
}
console.log(obj)
var maxNum = 0;
var maxKey = '';
for (var i in obj) {
if (maxNum < obj[i].num) {
maxNum = obj[i].num
maxKey = i
}
}
console.log(`出现最多次数的字母是:${maxKey},它出现的次数是:${maxNum}`)
4. 深拷贝算法
function deepCopy(obj,obj2)
{
let copyObj = obj2 || {};
for(let key in obj)
{
let value = obj[key];
//如果对象还包含子对象,则在调用一次自己
if(typeof value === 'object')
{
copyObj[key] = {};
arguments.callee(value,copyObj[key]);
}
//对象只是普通的值
else
{
copyObj[key] = obj[key];
}
}
return copyObj;
}