前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS方法比较

JS方法比较

原创
作者头像
愤怒的小鸟
修改2021-09-13 10:08:31
6.3K0
修改2021-09-13 10:08:31
举报
文章被收录于专栏:web share

1. Object.keys()

Object.keys 返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。

代码语言:javascript
复制
// simple array
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']

// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // console: ['0', '1', '2']

// array like object with random key ordering
var anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(anObj)); // console: ['2', '7', '100']

2. for of 和 for in的区别

  • 循环对象属性的时候,使用for...in;遍历数组的时候的时候使用for...of
  • for...in循环出的是key,for...of循环出的是value
  • for...of是ES6新引入的特性。修复了ES5引入的for...in的不足
  • for...of不能循环普通的对象,需要通过和Object.keys()搭配使用

注释:

  1. for...of循环不会循环对象的key,只会循环出数组的value,因此for...of不能循环遍历普通对象,对普通对象的属性遍历推荐使用for...in。
  2. 对象的所有键名都是字符串(ES6 又引入了 Symbol 值也可以作为键名),所以加不加引号都可以。如果键名是数值,会被自动转为字符串。

3. 将arguments强制转化为数组,还有几种方式

代码语言:javascript
复制
function restParamaterFunction (x, y) {
    // arguments转为数组,截取从下标为2到最后的元素
    // slice()截取数组,包括 begin,不包括end
    var a = Array.prototype.slice.call(arguments, 2); 
    return (x + y) * a.length; 
}

console.log(restParamaterFunction(1, 2, 'hello', true, 7));
  • Array.prototype.slice.call(arguments)的作用为:强制转化arguments为数组格式,等价于[ ].slice.call(arguments)
  • 利用es6的Array.from():Array.from(arguments)
  • 利用es6的展开表达式:[...arguments]

4. substr 和 substring

  • substr第一个参数是开始截取的位置,第二个参数是截取的长度
  • substring第一个参数是开始截取的位置,第二个参数是截取的结束位置(不包含结束位置上的字符串)

5. find 和 findIndex

  • find 方法返回第一个满足条件的值,如果没有满足条件的值,find 会返回 undefined
  • findIndex 方法则返回这个值在数组里的索引,如果没有满足条件的值,而 1 findIndex 返回-1。

6. 判断对象存在某个属性 in 和 Object.prototype.hasOwnProperty.call()

  • 如果指定的属性在指定的对象或其原型链中,则in 运算符返回true
代码语言:javascript
复制
const car = { make: 'Honda', model: 'Accord', year: 1998 };

console.log('make' in car);
// expected output: true

delete car.make;
if ('make' in car === false) {
  car.make = 'Suzuki';
}

console.log(car.make);
// expected output: "Suzuki"
  • Object.prototype.hasOwnProperty.call(obj, ele) 返回布尔值,判断 是否obj是否存在属性ele

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Object.keys()
  • 2. for of 和 for in的区别
  • 3. 将arguments强制转化为数组,还有几种方式
  • 4. substr 和 substring
  • 5. find 和 findIndex
  • 6. 判断对象存在某个属性 in 和 Object.prototype.hasOwnProperty.call()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档