问答题:
1.数组方法里push、pop、shift、unshift、join、split分别是什么作用。
push:在数组最后推入新的参数。
pop:在数组最后删除参数。
shift:删除数组最前面的参数。
unshift:在数组最前面添加新的参数。
join:用参数将数组链接生成一个新的字符串,不会改变原数组。
split:把字符串分割成以参数为分割界限的数组。
2.用 splice 实现 push、pop、shift、unshift方法
var arr =[1,2,3,4];
arr.splice(arr.length-1,1);//pop
arr.splice(arr.length,1,4);//push
arr.splice(0,1);//shift
arr.splice(0,0,1);//unshift```
#代码题:
##使用数组拼接出如下字符串:
![](https://img.haomeiwen.com/i2399926/337e34f1e84bd6e0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
var prod = {
name: '女装',
styles: ['短款', '冬季', '春装']
};
function getTpl(data){
var arr=[];
arr.push('<dl class="product">');
arr.push('<dt>'+data.name+'</dt>');
for (var i=0;i<data.styles.length;i++){
arr.push('<dd>'+data.styles[i]+'</dd>');
}
arr.push('</dl>');
return arr.join('');
}
var result = getTpl(prod);
console.log(result);
##写一个find函数,实现下面的功能
![](https://img.haomeiwen.com/i2399926/258110b262d41bee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
var arr = [ "test", 2, 1.5, false ];
function find(arr,idx){
for(var i=0;i<arr.length;i++){
if(idx === arr[i]){
return i;
}
return -1;
}
}```
写一个函数filterNumeric,把数组 arr 中的数字过滤出来赋值给新数组newarr, 原数组arr不变
arr = ["a", "b", 1, 3, 5, "b", 2];
function filterNumeric(arr){
var arrNumber = [];
for(var i=0;i<arr.length;i++){
if(typeof arr[i] === 'number'){
arrNumber.push(arr[i]);
}
}
return arrNumber;
}```
##对象obj有个className属性,里面的值为的是空格分割的字符串(和html元素的class特性类似),写addClass、removeClass函数,有如下功能
![](https://img.haomeiwen.com/i2399926/b9b007fde5f01210.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
var obj = {
className: 'open menu'
};
function addClass(obj,idx){
var arr = obj.className.split(' ');//将字符串切割为数组
for(var i=0;i<arr.length;i++){//遍历obj
if(arr[i] === idx){//当新参数与原数组相同时
return;//跳出
}
}
arr.push(idx);
obj.className = arr.join(' ');//将新数组合并为字符串
return obj;
}```
function removeClass(obj,idx){
var arr = obj.className.split(' ');
for(var i=0;i<arr.length;i++){
if(arr[i] === idx){
arr.splice([i],1);//此处注意不能return,否则function立即跳出
}
}
obj.className = arr.join(' ');
return obj;
}```
##写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如
![](https://img.haomeiwen.com/i2399926/bf933737473f728e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
function camelize(str){
var arr = str.split('-');
return arr.join('');
}
##如下代码输出什么?为什么?
![](https://img.haomeiwen.com/i2399926/9b9fe4a1bae49bea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
arr.push给arr推入了一个新参数,返回值为3,即此时数组arr共有三个参数。
``arr[arr.length-1]()``调用了此匿名函数的第三项,执行``alert(console.log('hello hunger valley'));``
··console.log('hello hunger valley')··其返回类型是undefined,所以最终输出undefined
##写一个函数filterNumericInPlace,过滤数组中的数字,删除非数字。要求在原数组上操作
![](https://img.haomeiwen.com/i2399926/27af198c0c1923ee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
arr = ["a", "b", 1, 3, 4, 5, "b", 2];
function filterNumericInPlace(arr){
for(var i=0;i<arr.length;i++){
if(typeof arr[i] !== 'number'){
arr.splice([i],1);//从该位置取出一位,会使整个数组向前移动一位
i--;//一旦数组向前移动,使i减一位,与新数组的位置对应
}
}
}```
写一个ageSort函数实现数组中对象按age从小到大排序
function ageSort(people){
people.sort(function(a,b){
return a.age>b.age;
});
return people;
}```
##写一个filter(arr, func)函数用于过滤数组,接受两个参数,第一个是要处理的数组,第二个参数是回调函数(回调函数遍历接受每一个数组元素,当函数返回true时保留该元素,否则删除该元素)。实现如下功能:
![](https://img.haomeiwen.com/i2399926/d5a9c3013b014d6c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
function isNumeric (el){
return typeof el === 'number';
}
arr = ["a",3,4,true, -1, 2, "b"]
function filter(arr,func){
for( var i=0; i<arr.length; i++){
if(!func(arr[i])){
arr.splice(i,1);
}
}
return arr;
}```
字符串
写一个 ucFirst函数,返回第一个字母为大写的字符
function ucFirst(arr){
return arr[0].toUpperCase()+arr.substr(1,arr.length-1);
}```
##写一个函数truncate(str, maxlength), 如果str的长度大于maxlength,会把str截断到maxlength长,并加上...,如
![](https://img.haomeiwen.com/i2399926/a99e7771f5725633.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
function truncate(str, maxlength){
var arr = str.split('');
for (var i=0;i<arr.length;i++){
if(arr.length > maxlength){
arr.splice(maxlength,arr.length);
return arr.join('')+ '...';
}
return arr.join('');
}
}```
数学函数
写一个函数,获取从min到max之间的随机整数,包括min不包括max
function getRandStr(min,max){
return min + Math.floor(Math.random()*(max-min));
}```
##写一个函数,获取从min都max之间的随机整数,包括min包括max
function getRandStr(min,max){
return min + Math.floor(Math.random()*(max-min+1));
}```
写一个函数,获取一个随机数组,数组中元素为长度为len,最小值为min,最大值为max(包括)的随机整数
function getRandStr(len,min,max){
var arr =[];
for(var i=0; i<len;i++){
arr.push(Math.floor(Math.random()*(max-min+1))+min);
}
return arr;
}
写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。
function getRandStr(n){
var val='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var arr='';
for(var i=0;i<n;i++){
arr += val[Math.floor(Math.random()*val.length)];
}
return arr;
}```
网友评论