1. 数组去重
有一个数组 [ 7, 8, 3, 5, 1, 2, 4, 3, 1 ],写一个diff方法来“去重”并“输出从大到小”的“货币格式”。期望结果:"8,754,321"
const arr = [ 7, 8, 3, 5, 1, 2, 4, 3, 1 ]; let unique = [...new Set(arr)].sort((a,b) => a-b) let a = unique.map((item,index) => { if (index % 3 === 0 && index !==0) { return item + ',' } return item }).reverse().join('') console.log(a);
2. 异步串行加载
有一个数组:const imgs = ['url1', 'url2', 'url3', ...];
请实现效果:
//1)回调函数实现 function loadImage(imgs) { const img = new Image(); const url = imgs.shift(); if (url) { img.src = url; img.onload = function() { if (imgs.length > 0) loadImage(imgs) } } } // 2)async await-promise实现 function loadImage(url) { return new Promise((resolve, reject) => { const img = new Image(); img.src = url; img.onload = function() { resolve() } }) } async function loadImages() { for(let url of imgs) { await loadImage(url); } }
3. 数组遍历
按照图片数组顺序队列加载图片(注:加载完一张再加载下一张)
写一个有效的算法完成矩阵搜索,这个矩阵有如下特点:
1) 矩阵中的每行数字都是经过排序的,从左到右依次变大。
2) 每行的第一个数字都比上一行的最后一个数字大
// 例如:
let arr = [
[2, 4, 8, 9],
[10, 13, 15, 21],
[23, 31, 33, 51]
]
function findValue(num) { const maxOfArr = arr.map(item => item[item.length - 1]); let innerIndex = 0; for(let i of maxOfArr) { console.log(i) if (num <= i) { innerIndex = maxOfArr.indexOf(i); break; } } return !!(arr[innerIndex].find(item => item === num)) } console.log(findValue(21));