问答
一,数组方法里push、pop、shift、unshift、join、split分别是什么作用。(*)
1.push:为数组结尾添加一个新数。具体用法如下图:
2.pop:为数组结尾删除一个新数。具体用法如下图:
3.shift:为数组开头删除一个新数。具体用法如下图:
4.unshift:为数组开头添加一个新数。具体用法如下图:
5.join:为数组以某种符号分割之后转化为字符串。具体用法如下图:
6.split : 将字符串以某种符号分割之后转化为数组。具体用法如下:
var string = "hello world,my name is Harrisking"
undefined
var array = string.split("-")
undefined
array
["hello world,my name is Harrisking"]
var array = string.split(" ")
undefined
array
["hello", "world,my", "name", "is", "Harrisking"]
7.splice:为数组开头删除一个新数。具体用法如下图:
数组
一,用 splice 实现 push、pop、shift、unshift方法 (***)
- splice替代unshift:
- splice替代shift:
- splice替代pop:
- splice替代push:
二,使用数组拼接出如下字符串 (***)
-
答案:
var prod = { name :'女装', styles :['短款','冬装','春装'] } ; function getTpl(data){ var string; string = '<dl class = "product">' string += '\n\t<dt>'+ prod.name +'</dt>' for(i=0;i<prod.styles.length;i++){ string += '\n\t<dd>'+prod.styles[i]+'</dd>' } string += '\n</dl>'; console.log(string); }; var result = getTpl(prod);
三,写一个find函数,实现下面的功能 (***)
-
答案:
function find(arr,data){ for(var i=0; i<arr.length; i++){ if(arr[i]==data){ console.log(i); } } }; var arr = ["test", 2, 1.5, false]; find(arr,2); find(arr,"1.5");
四,写一个函数filterNumeric,把数组 arr 中的数字过滤出来赋值给新数组newarr, 原数组arr不变 (****)
-
答案:
function filterNumeric(){ var newarr = []; for(var i=0; i<arr.length; i++){ if(typeof arr[i]=='number'){ newarr.push(arr[i]); } } return newarr; }; var arr = ["a", "b", 1, 3, 5, "b", 2]; console.log(filterNumeric(arr));
五,对象obj有个className属性,里面的值为的是空格分割的字符串(和html元素的class特性类似),写addClass、removeClass函数,有如下功能:(****)
-
答案一:
var obj = { className: 'open menu' } var array = obj.className.split(" "); function addClass(obj,data){ for(i=0; i<array.length; i++){ if(array[i]==data){ return; } array.push(data); return array.join(' '); } } console.log(addClass(obj,'sdfa')); function removeClass(obj,data){ for(i=0; i<array.length; i++){ if(array[i]==data){ array.splice(i,1); return array.join(' '); } } return; } console.log(removeClass(obj,'open'));
-
方法二:
var obj = { className: 'open menu' } var array = obj.className.split(" "); function addClass(obj,data){ if(array.indexOf(data)==-1){ array.push(data); return array.join(' '); } } console.log(addClass(obj,'sdfa')); function removeClass(obj,data){ if(array.indexOf(data)!==-1){ array.splice(array[array.indexOf(data)],1); return array.join(' '); } return; } console.log(removeClass(obj,'open'));
方法三:
<script>
var obj = {
className: 'open menu'
}
function addClass(obj,data){
var array = obj.className.split(' ');
if(array.indexOf(data)==-1){
obj.className = obj.className + " " + data; //加上空格再加上新字符串
}
};
function removeClass(obj,data){
var array = obj.className.split(" ");
if(array.indexOf(data) != -1){
obj.className = obj.className.replace(data,"");
}
}
</script>
六,写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如 (***)
-
答案:
function camelize(data){ array = data.split('-'); for(i=0; i<array.length; i++){ array[i]=array[i].charAt(0).toUpperCase()+array[i].slice(1); } return array.join(""); } console.log(camelize("a-b-c"))
七,如下代码输出什么?为什么? (***)
- 答案:
alert弹框,同时输出“hello hunger valley”。
理由:arr [ arr.length-1 ] ( )的意思就是问arr数组最后一位是什么?
因为把function() { alert(console.log('hello hunger valley')) }函数push到了arr[2]上,则arr数组最后一位是这个函数。这个函数执行得到弹框,因为alert只输出字符串而不是命令,所以显示undefined,并执行console.log('hello hunger valley',因此最后一位是“hello hunger valley”。
八,写一个函数isPalindrome,判断一个字符串是不是回文字符串(正读和反读一样,比如 abcdcba 是回文字符串, abcdefg不是)
疑问答案:
数组不能相等:
同样存在问题的方法:
function isPalindrome(data){
array = data.split('');
for(i=0; i<array.length; i++){
if((array[i])!=(array[array.length-i-1])){
return false;
}
return array.join("");
}
return;
}
isPalindrome("abcdddcba")
答案一:
- 优化之后:
<script>
function isPalindrome(data){
var string1 = data.split('').reverse().join('');
if(string1==data){
return "满足条件";
}
return "wrong";
};
console.log(isPalindrome('abccba'));
</script>
九,写一个ageSort函数实现数组中对象按age从小到大排序 (***)
var john = { name: "John Smith", age: 23 }
var mary = { name: "Mary Key", age: 18 }
var bob = { name: "Bob-small", age: 6 }
var people = [ john, mary, bob ]
ageSort(people); // [ bob, mary, john ]
-
答案:
function ageSort(data){ data.sort( function compare(obj1,obj2){ if(obj1.age < obj2.age){ return -1; } if(obj1.age > obj2.age){ return 1; } return 0; } )};
十,写一个filter(arr, func)函数用于过滤数组,接受两个参数,第一个是要处理的数组,第二个参数是回调函数(回调函数遍历接受每一个数组元素,当函数返回true时保留该元素,否则删除该元素)。实现如下功能: (****)
function isNumeric (el){
return typeof el === 'number';
}
arr = ["a",3,4,true, -1, 2, "b"]
arr = filter(arr, isNumeric) ; // arr = [3,4,-1, 2], 过滤出数字
arr = filter(arr, function(val){ return typeof val === "number" && val > 0 });
// arr = [3,4,2] 过滤出大于0的整数
- 答案:
字符串
一,写一个 ucFirst函数,返回第一个字母为大写的字符 (***)
ucFirst("hunger") == "Hunger"
- 答案:
function ucFirst(data){
return data.charAt(0).toUpperCase()+data.slice(1);
}
console.log(ucFirst('happy'))
二,写一个函数truncate(str, maxlength), 如果str的长度大于maxlength,会把str截断到maxlength长,并加上...,如 (****)
truncate("hello, this is hunger valley,", 10)) == "hello, thi...";
truncate("hello world", 20)) == "hello world"
- 答案:
方法一:
方法二:
function truncate(str,num){
var array = str.split("");
if(array.length > num){
var str2 = str.substring(num,str.length);
return str.replace(str2,"...");
}
return str;
}
console.log(truncate("hello, this is hunger valley,", 10));
console.log(truncate("hello world", 20));
数学函数
一,写一个函数,获取从min到max之间的随机整数,包括min不包括max (***)
- 答案:
function array(min,max){
return Math.floor(Math.random()*(max-min)+min);
}
console.log(array(2,9))
二,写一个函数,获取从min都max之间的随机整数,包括min包括max (***)
- 答案:
function array(min,max){
return Math.floor(Math.random()*(max-min+1)+min);
}
console.log(array(2,8))
三,写一个函数,获取一个随机数组,数组中元素为长度为len,最小值为min,最大值为max(包括)的随机整数 (***)
- 答案:
function array(min,max,len){
var arr = [];
for(var i=0; i<len; i++){
arr.push(Math.floor(Math.random()*(max-min+1)+min))
}
return arr;
}
console.log(array(2,8,7))
四,写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。
function getRandStr(len){
//todo...
}
var str = getRandStr(10); // 0a3iJiRZap
- 答案:
方法一:
function getRandStr(len){
var str = "ghigklmnopqrstuvwxyz1234567890AQZWSXCDERFVGTBNHYUJMIKOLP";
var arr = str.split('');
var result=[];
for(var i=0; i<len; i++){
result+=arr[Math.floor(Math.random()*arr.length)];
}
return result;
}
var str = getRandStr(10); // <0a3iJiRZap></0a3iJiRZap>
console.log(getRandStr(10))
方法二:
function getRandStr(len){
var str = "ghigklmnopqrstuvwxyz1234567890AQZWSXCDERFVGTBNHYUJMIKOLP";
var result="";
for(var i=0; i<len; i++){
result+=str[Math.floor(Math.random()*str.length)];
}
return result;
}
var str = getRandStr(10); // <0a3iJiRZap></0a3iJiRZap>
console.log(getRandStr(10))