今日份刷题九道
FED3:
题目描述
查找两个节点的最近的一个共同父节点,可以包括节点自身
我的代码:
function commonParentNode(oNode1, oNode2) {
if(oNode1.parentNode==oNode2.parentNode){
return oNode1.parentNode
}
}
题解:(大神答案)
function commonParentNode(oNode1, oNode2) {
if(oNode1.contains(oNode2)){
return oNode1;
}else{
return commonParentNode(oNode1.parentNode,oNode2);
}
}
思路: 判断oNode1中是否包含oNode2?如果包含则共同父节点为oNode1;如果不包含,则自调用,判断oNode1的父节点中是否包含oNode2?以此类推。
难点: 验证一个节点是否包含另一个节点就可以,不必验证两次,如果是被包含的关系,往上爬的时候会遇到另一个节点的。
FED6:
题目描述
用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等
我的代码:
function fibonacci(n) {
if(n==2||n==1){
return 1
}
else{
return fibonacci(n-1)+fibonacci(n-2);
}
}
题解:(大神答案)
function fibonacci(n) {
//一、递归解法
return n<=2?1:fibonacci(n-1)+fibonacci(n-2);
//二、循环解法
var num1=1;
var num2=1;
for(var i=2;i<n;i++){
num2+=num1;
num1=num2-num1;
}
return num2;
}
难点: 循环体内的计算过程详解:
第一句:将num2的旧值,加上num1,得到num2的新值
第二句:用num2的新值,减去num1,得到num1的新值
当前循环结束,num1和num2的值都获得了更新
FED7:
题目描述
题目描述
按所给的时间格式输出指定的时间
格式说明
对于 2014.09.05 13:14:20
yyyy: 年份,2014
yy: 年份,14
MM: 月份,补满两位,09
M: 月份, 9
dd: 日期,补满两位,05
d: 日期, 5
HH: 24制小时,补满两位,13
H: 24制小时,13
hh: 12制小时,补满两位,01
h: 12制小时,1
mm: 分钟,补满两位,14
m: 分钟,14
ss: 秒,补满两位,20
s: 秒,20
w: 星期,为 [‘日’, ‘一’, ‘二’, ‘三’, ‘四’, ‘五’, ‘六’] 中的某一个
function formatDate(t,str){
var time={
'yyyy':t.getFullYear(),
'yy':t.getFullYear()%100,
'MM':add0(t.getMonth()+1),
'M':t.getMonth()+1,
'dd':add0(t.getDate()),
'd':t.getDate(),
'HH':add0(t.getHours()),
'H':t.getHours(),
'hh':add0(t.getHours()%12),
'h':t.getHours()%12,
'mm':add0(t.getMinutes()),
'm':t.getMinutes(),
'ss':add0(t.getSeconds()),
's':t.getSeconds(),
'w':function(){
var day=["日","一","二","三","四","五","六"];
return day[t.getDay()]
}
}
for(var i in time){
str=str.replace(i,time[i]);
}
function add0(tt){
if(tt<10){
return 0+''+tt
}
else{
return tt
}
}
return str
}
FED8:
题目描述
如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1
否则如果字符 Unicode 编码 > 255 则长度为 2
function strLength(s, bUnicode255For1) {
var length=s.length;
if(!bUnicode255For1){
for(var i in s){
if(s.charCodeAt(i)>255){
length++
}
}
}
return length;
}
难点: charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。
字符串中第一个字符的位置为 0, 第二个字符位置为 1,以此类推。
语法:string.charCodeAt(index)
FED13:加粗文字
这道题没什么好说的,使用strong标签就可以了
FED14:段落标识
这道题使用p标签就可以了
FED15:设置文字颜色
使用style将文字变色就可以了
FED16:
题目描述
找出元素 item 在给定数组 arr 中的位置
function indexOf(arr, item) {
return arr.indexOf(item)
}
FED17:
题目描述
计算给定数组 arr 中所有元素的总和
function sum(arr) {
var sum=0
for(var i=0;i<arr.length;i++){
sum+=arr[i]
}
return sum
}