美文网首页饥人谷技术博客
任务18-数组、字符串、数学函数

任务18-数组、字符串、数学函数

作者: 26d608950683 | 来源:发表于2016-08-15 12:44 被阅读0次

问答题:

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;
}```

相关文章

网友评论

    本文标题:任务18-数组、字符串、数学函数

    本文链接:https://www.haomeiwen.com/subject/sbkjsttx.html