JS知识点(5)-内置函数

今日天气
晴间多云

1.构造函数和创建对象

字面量创建数组、和对象就是正常常用的创建方法,在此省略

1-1.使用构造函数创建对象、数组

// 使用构造函数创建对象
var obj2 = new Object();
obj2.name = '李四';
obj2.age = 18;
console.log('obj2',obj2);

// 通过构造函数来创建数组
var arr2 = new Array();
arr2[0] = 'x';
arr2[1] = 'y';
arr2[2] = 'z';
console.log('arr2',arr2);

实例:声明一个用来创建猫的构造函数

// 声明一个用来创建猫的构造函数
function Cat(name, color) {
    this.name = name;
    this.color = color;
}
// 创建两只猫
var cat1 = new Cat('小花','black');
var cat2 = new Cat('小黑', 'white');
console.log('cat1', cat1);
console.log('cat2', cat2);

2.日期对象常用方法和插件

2-1.创建日期的方式

new Date()
括号内参数:
 (1)没有参数时,得到当前时间的日期对象
 (2)参数是确定的日期时,例'2000-09-01 12:00:00',得到指定日期的日期对象
 (3)参数为0, 计算机的起始时间1970年1月1日
 (4)参数是毫秒数时,得到的是据1970年1月1日过了括号内的毫秒数得到的日期

// 创建日期对象

// 方式1: 得到当前时间的日期对象
var date = new Date();
console.log('date',date);

// 方式2: 得到指定日期的日期对象
var date2 = new Date('2000-09-01 12:00:00');
console.log('date2',date2);

// 方式3: 参数为0, 计算机的起始时间1970年1月1日
var date3 = new Date(0);
console.log('date3',date3);


// 方式4: 参数是毫秒数
var date4 = new Date(1663041444916);
console.log('date4',date4);

2-2.日期对象常用方法

new Date()
getFullYear() //年
getMonth() + 1 // 月份
getDate() // 日
getHours() // 时
getMinutes() // 分
getSeconds() // 秒
getDay() // 星期
getTime() // 前面要加上new Date(),得到的是1970到现在的毫秒数
Date.now() // 前面不需要加上new Date(),直接得到的是1970到现在的毫秒数

3.Math对象的常用方法

Math.round(x) // 四舍五入
Math.abs(x) // 取绝对值
Math.floor(x) // 向下取整
Math.ceil(x) // 向上取整
Math.random() // 取随机数默认区间[0,1),包前不包后
toFixed(x) // 保留x位小数 (类型是数字)
parseInt(x) // 把小数变整数

4.字符串常用方法

length // 检测字符串的长度
trim() // 去除字符串两端的空格
split() // 转数组,括号内为选择从哪个符号开始分割

  • 截取字符串
    substring(x,y) // 截取字符串,从下标2开始到下标为y, 不包括y ,一般不适用于负数
    slice(2,-1) // slice可以使用负数, -1表示最后一个,里面参数是一个单独的数字,是从截取当前下标到最后,参数是一个单独的负数时,代表截取倒数几个字符串
    substr(x,y) // 截取字符串,从下标x开始,截取y位
  • 检测字符串
    charAt(2) // 找出当前下标对应的字符
    indexOf() // 找出当前字符对应的下标,从左边开始,只返回第一个符合条件的下标,不包括的时候返回-1
    lastIndexOf() // 找出当前字符对应的下标,从右边开始,只返回第一个符合条件的下标,不包括的时候返回-1
    includes() // 检测字符串是否包含某个字符串
    toLowerCase() // 转小写
    toUpperCase() // 转大写
    match() // 检查是否跟括号内的字符串匹配,匹配的话存入下标,只检测第一个,参数可以是正则表达式
    replace('my','you') // 把my替换成you,只替换第一个符合条件的字符串,如果换成replace(/my/g,'you'),则是替换所有的my为you

5.数组常用方法

(1) join() //将数组变为字符串,参数为空时,默认用“,”拼接,里面放什么,就用什么拼接。
(2)reverse() //翻转字符串,将字符串倒序排列,和原字符串一致
(3)pop() //删除数组最后一个元素,并返回删除的元素
(4)push() //在数组最后添加一个或多个元素,并返回长度
(5)shift() //删除数组第一个元素,并返回删除的元素
(6)unshift() //在数组前面添加一个或多个元素,并返回长度
(7)isArray() //参数为函数,判断是否为数组,输出为true or false
(8)includes() // 参数为函数,判断数组的所有元素是否包含某个元素,输出为true or false
(9)every() //参数为函数,判断数组的所有元素是否符合某个条件,输出为true or false
(10)some() // 参数为函数,判断数组是否有元素符合某个条件,输出为true or false
(11)find() //参数为函数,找到符合条件的成员, 只返回第一个
(12)findIndex() //参数为函数,找到符合条件的成员的下标,并输出第一个下标
(13)indexOf() //括号内输入要查找的元素,从左开始,输出只返回第一个符合条件的字符的下标
(14)lastIndexOf() //括号内输入要查找的元素,从右开始,输出只返回第一个符合条件的字符的下标
(15)map() // 改头换面

var arr = [
  { name: "张三", age: 18 },
  { name: "李四", age: 28 },
  { name: "王五", age: 13 },
  { name: "张三", age: 48 },
  { name: "陈六", age: 48 },
];

// 给数组每一个成员添加两个属性sex和address
var newArr = arr.map(function(item,index) {
    return  {
        name: item.name,
        age: item.age,
        sex: '男',
        address: '深圳'
    }
});
console.log('newArr',newArr);


// 生成一个新的数组, 数组成员只有一个age属性
var newArr2 = arr.map(function(item) {
    return {
        age: item.age
    }
});
console.log('newArr2',newArr2);

// 生成一个新的数组, 数组成员由年龄组成
var newArr3 = arr.map(function(item) {
    return item.age;
});
console.log('newArr3',newArr3);


// 生成一个新的数组, 数组成员全部为'aa', 此时得到的新数组跟原数组没有任何关系
var newArr4 = arr.map(function(item) {
    return 'aa';
});
console.log('newArr4',newArr4);

(16)filter() // 检测数组元素,并返回符合条件所有元素的数组。

// 成员是基本数据类型
var arr = [18, 28, 13, 48, 48];
// 找出大于20的成员
var newArr = arr.filter(function(item) {
    return item > 20;
});
console.log('newArr',newArr);


// 数组成员是引用数据类型
var arr = [
  { name: "张三", age: 18 },
  { name: "李四", age: 28 },
  { name: "王五", age: 13 },
  { name: "李三", age: 48 },
  { name: "陈六", age: 48 },
];
// 找出年龄大于20的成员
var newArr = arr.filter(function(item) {
    return item.age > 20;
});
console.log('newArr',newArr);


// 找出名字带"三"的成员
var newArr2 = arr.filter(function(item) {
    // return item.name.indexOf('三') > -1 ;
    return item.name.includes('三');
});
console.log('newArr2',newArr2);

(17)forEach() // 遍历数组

<script>
    var arr = [{
            name: "张三",
            age: 18
        },
        {
            name: "李四",
            age: 28
        },
        {
            name: "王五",
            age: 13
        },
        {
            name: "张三",
            age: 48
        },
        {
            name: "陈六",
            age: 48
        },
    ];

    // for循环遍历数组, 展示在网页上(略)
   

    // forEach遍历数组, 展示在网页上
    arr.forEach(function (item, index) {
        document.write(`<p>${item.name} -- ${item.age}</p>`);
    });
</script>

(18)slice() // 选取数组的成员,并返回一个由选取的成员组成的新数组,包前不包后

var arr = [
  {name:'张三',age:18},
  {name:'李四',age:28},
  {name:'王五',age:13},
  {name:'张三',age:48},
  {name:'陈六',age:48},
];

// 截取下标为1-3的数组成员
var newArr = arr.slice(1,3);
console.log(newArr);

(19)splice() // 可以删除数组中任意位置的成员, 还可以替换成员

// splice可以删除任意位置的成员(会改变原数组)
var arr = ['a','b','c','d','e'];
// 1. 删除成员:从位置1开始, 删除1个
// 第一个参数表示删除开始的下标, 第二个参数表示删除的个数
arr.splice(1,1);
console.log(arr);
// splice可以删除任意位置的成员(会改变原数组)
var arr = ['a','b','c','d','e'];
// 1. 删除成员:从位置1开始, 删除3个
// 第一个参数表示删除开始的下标, 第二个参数表示删除的个数
arr.splice(1,3);
console.log(arr);
var arr = ['a','b','c','d','e'];
// 3. 把下标为2的成员替换成'z'
// 三个参数, 第一个参数是开始的下标, 第二参数是被替换的个数
arr.splice(2,1,'z');
console.log(arr);

(20)sort()
对数组的元素进行排序。

  • 数组成员是字符串, 直接调用 arr.sort();
  • 数组成员是数字, 传入函数 function(a,b) {return a-b;}
  • 数组成员是对象时, 详情请看下面的代码
// 字符串数组排序(会改变原数组)
var arr = ['ouzhixiang','chenjingyuan','chenpeipeng','tubobin','liuxinsu'];
// 按字母升序
arr.sort();
console.log(1, arr);

// 降序排序
arr.reverse();
console.log(2, arr);
// 数字数组排序
var arr = [1,3,4,345,7,8,33];
// 升序排列
arr.sort(function(a,b) {
    return a-b;
}); 
console.log(1, arr);

// 降序排列
arr.sort(function(a,b) {
    return b-a;
}); 
console.log(2, arr);
// 对象数组排序
var arr = [
  { username: "zhangsan", nickName: "张三", age: 18 },
  { username: "lisi", nickName: "李四", age: 28 },
  { username: "wangwu", nickName: "王五", age: 13 },
  { username: "lisan", nickName: "李三", age: 48 },
  { username: "chenliu", nickName: "陈六", age: 48 },
];
// 按年龄进行升序排序
arr.sort(function (a, b) {
  if (a.age > b.age) {
    return 1;
  } else if (a.age < b.age) {
    return -1;
  } else {
    return 0;
  }
});
console.log("按年龄进行排序");
console.log(arr);

// 封装函数, 让对象数组可以按任意属性进行排序
var arr = [
  {
    username: "zhangsan",
    nickName: "张三",
    age: 18,
  },
  {
    username: "lisi",
    nickName: "李四",
    age: 28,
  },
  {
    username: "wangwu",
    nickName: "王五",
    age: 13,
  },
  {
    username: "lisan",
    nickName: "李三",
    age: 48,
  },
  {
    username: "chenliu",
    nickName: "陈六",
    age: 48,
  },
];

function compare(attr) {
  arr.sort(function (a, b) {
    if (a[attr] > b[attr]) {
      return 1;
    } else if (a[attr] < b[attr]) {
      return -1;
    } else {
      return 0;
    }
  });
} 
compare('age');
console.log("按任意属性进行排列");
console.log(arr);

(21)reduce() // 数组累加器

var arr = [1,2,3,4];
var sum = 0;
arr.forEach(item=> {
    sum += item;
})
console.log('sum',sum);

// 使用reduce进行累加
// 第一个参数是个函数, 回调函数接收两个形参(第一个形参是上一次累加的结果, 第二个参是当前成员)
// 第二个参数是累加的初始值
// sum上一次累加结果, item是当前成员
var result = arr.reduce(function(sum, item) { 
    return sum + item;
},0);
console.log('result', result);

// 数组成员是对象
var arr = [
    { username: "zhangsan", nickName: "张三", age: 18 },
    { username: "lisi", nickName: "李四", age: 28 },
    { username: "wangwu", nickName: "王五", age: 13 },
    { username: "lisan", nickName: "李三", age: 48 },
    { username: "chenliu", nickName: "陈六", age: 48 },
  ];
  // 算出年龄的总和以及平均年龄
  var result2 = arr.reduce(function(sum, item) {
      return sum + item.age;
  }, 0);
  console.log('result2',result2);
  console.log('平均年龄', Math.round(result2/arr.length));
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容