在前端开发中,数组是我们最常用的数据类型之一。而在 ES7 中,为了方便地判断一个数组中是否包含某个元素,添加了 array.prototype.includes()
方法。但是,随着 ES8 的到来,我们可以使用更加强大的 Object.values()
方法来替代 array.prototype.includes()
。
ES7 的 array.prototype.includes()
在 ES7 中,新增了 array.prototype.includes()
方法,用于判断一个数组是否包含某个元素。它的语法如下:
array.includes(searchElement[, fromIndex])
其中,searchElement
表示要查找的元素,fromIndex
表示开始查找的位置。如果省略 fromIndex
,则默认从数组的第一个元素开始查找。
使用 array.prototype.includes()
方法可以方便地判断一个数组中是否包含某个元素。例如:
const arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3)); // true console.log(arr.includes(6)); // false
ES8 的 Object.values()
在 ES8 中,新增了 Object.values()
方法,用于返回一个对象中所有的值。它的语法如下:
Object.values(obj)
其中,obj
表示要返回值的对象。
使用 Object.values()
方法可以方便地获取一个对象中所有的值。例如:
const obj = { a: 1, b: 2, c: 3 }; console.log(Object.values(obj)); // [1, 2, 3]
为什么要使用 Object.values()?
虽然 array.prototype.includes()
方法可以方便地判断一个数组中是否包含某个元素,但是它只适用于数组这种数据类型。而在实际开发中,我们可能会遇到需要判断一个对象中是否包含某个值的情况。
例如,我们有一个包含多个用户信息的对象数组,每个用户信息包含了用户名和密码:
const users = [ { username: 'user1', password: 'password1' }, { username: 'user2', password: 'password2' }, { username: 'user3', password: 'password3' } ];
如果我们想要判断某个用户名是否在这个数组中,使用 array.prototype.includes()
方法就不太方便了。而使用 Object.values()
方法,我们可以将每个用户信息对象转换为一个值数组,然后再使用 array.prototype.includes()
方法进行判断:
const usernames = users.map(user => user.username); console.log(usernames.includes('user2')); // true console.log(usernames.includes('user4')); // false
可以看到,使用 Object.values()
方法可以方便地将对象转换为值数组,然后再使用 array.prototype.includes()
方法进行判断,非常方便。
总结
在前端开发中,数组是我们最常用的数据类型之一。在 ES7 中,为了方便地判断一个数组中是否包含某个元素,新增了 array.prototype.includes()
方法。但是,在实际开发中,我们可能会遇到需要判断一个对象中是否包含某个值的情况。此时,可以使用 ES8 新增的 Object.values()
方法,将对象转换为值数组进行判断。使用 Object.values()
方法可以方便地获取一个对象中所有的值,非常方便实用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65c81e7dadd4f0e0ff1fd4d9