题目描述:
- 有一个对象X,内容如下,请写程序找出所有d的值
内容代码:
<script>
var X = {
y:{
c:{
d:1
}
},
z:{
e:{
d:2
}
},
q:{
f:{
d:3
}
},
o:{
m:{
g:{
h:{
d:4
}
}
}
}
}
</script>
解题思路:观察题目,里面内容,d所在对象深度不同,所以要一层层找,判断类型是否是对象,是的话继续调用本函数,不是的话判断属性名是否是d。//可以把d也设置成参数,可修改。
程序代码如下:
<script>
function fandD(obj,v) {
for (let i in obj) {
if (typeof (obj[i]) == 'object') {
fandD(obj[i],v)
}
//上面if判断中也可以写(obj[i] instanceof Object),用来判断是否是对象类型
else if (i == 'd') {
console.log('d的值为:', obj[i]);
}
}
}
fandD(X,'d');
</script>
if (typeof (obj[i]) == 'object') {
fandD(obj[i],v)
}
上面if判断中也可以写(obj[i] instanceof Object),用来判断是否是对象类型
if (obj[i] instanceof Object) {
fandD(obj[i],v)
}
运行结果如图所示:
第二题:编写一个函数,按下面的输入和输出完善代码
描述并解决代码:
<script>
// //- 编写一个函数,按下面的输入和输出完善代码
function strChange(title) {
//可以用注释里面的直接替换
// return title.toLowerCase().replaceAll('*', '-');
return title.toLowerCase().split('*').join('-');
//也可以用split分隔成数组再用join数组转字符串并用'-'连接
}
const resultStr = strChange('HellO*Books*Sword*A*WoRld');
console.log(resultStr); //返回'hello-books-sword-a-world'
</script>
function strChange(title) {
let _str = title;
for (let i = 0; i < _str.length; i++) {
var _lowcasestr = _str.toLowerCase();
}
let _newstr = _lowcasestr.replaceAll('*', '-');
return _newstr;
// console.log(_newstr);
}
const resultStr = strChange('HellO*Books*Sword*A*WoRld');
console.log(resultStr);//返回'hello-books-sword-a-world'
第三题:
实现一个方法,补全以下代码
实现打印4次zhengzhou,每次间隔1s,注意repeat方法内部参数不能写死
错误写法:
//for循环是一次就执行内部的循环,如果用wait只会同时延迟1s,再出四次结果。
//如果用times*1000,就会等结果最长的执行以后,再集体出结果。
正确代码:
<script>
function repeat(func, times, wait) {
let _times = times;
return (city) => {
let _timer = setInterval(() => {
if (_times <= 0) {
clearInterval(_timer);
return;
}
func(city);
_times--;
}, wait)
//for循环是一次就执行内部的循环,如果用wait只会同时延迟1s,再出四次结果。
//如果用times*1000,就会等结果最长的执行以后,再集体出结果。
// for (let i = 0; i < times; i++) {
// let _timer = setTimeout(() => {
// func(city);
// }, times*1000)
// }
}
}
const repeatFun = repeat(console.log, 4, 1000);
repeatFun('zhengzhou');
</script>