1.假如有1023个苹果,需要放在10个箱子中,请问如何装箱才能满足;当满足需要任意(小于等于1023)个苹果时,只需要拿给客户若干个箱子而不需要拆想。
2.JS实现下面逻辑,如:920=900+20,241=200+40+1
3.将下面数组转换为树形结构
const data = [
{ id: 1, name: "办公管理", pid: 0 },
{ id: 2, name: "请假申请", pid: 1 },
{ id: 3, name: "出差申请", pid: 1 },
{ id: 4, name: "请假记录", pid: 2 },
{ id: 5, name: "系统设置", pid: 0 },
{ id: 6, name: "权限管理", pid: 5 },
{ id: 7, name: "用户角色", pid: 6 },
{ id: 8, name: "菜单设置", pid: 6 },
];
function toTree(data) {
// 删除所有children,以防止多长调用
data.forEach(item => {
delete item.children;
});
// 将数据存储为 以id为key的map索引数据列
const map={};
data.forEach(item => {
map[item.id]=item;
})
const list=[];
data.forEach(item => {
// 以当前遍历项,的pid,去map对象中找到索引的id
let parent=map[item.pid];
// 好绕啊,如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
if(parent) {
(parent.children || (parent.children=[])).push(item);
} else{
//如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 list结果集中,作为顶级
list.push(item);
}
})
return list;
}
console.log(toTree(data))
详解:blog.csdn.net/u013373006/…
4.var str = "a bc",去掉str中的空格
/*
*\s:匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。
*i 执行对大小写不敏感的匹配。
*g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
*/
var str = "a bc ";
console.log(str.replace(/\s/ig,''))
5.seTimeout实现setInterval
/*
* 调用函数
* 参数分为:true和false;
* 参数说明:传入true实现setInterval()功能;传入false取消setInterval()功能
* */
countTimer(true)
var i = 0
function countTimer(flag) {
if(flag) {
var timer=setTimeout(function(){
i+=1;
console.log("cl", i);
countTimer(true);
}, 2000);
} else {
clearTimeout(timer);
}
}
6.用js实现随机选取10--100之间的10个数字,存入一个数组,并排序。
function getSort(start, end, len) {
let list = [];
function getRandom(start, end) {
var num = end - start;
return Math.floor(Math.random() * num + start);
}
for(let i=0; i<len; i++) {
list.push(getRandom(start, end));
}
return list;
}
console.log(getSort(10, 100, 10).sort())