ES6 -
Object.keys
随着 ES6 的出现,一切都变得美好起来。ES6中内置的
Object.Keys
方法可以快速将对象中的所有键转换为数组。
const numbers = {
one: 1,
two: 2
Object.keys(numbers);
// [ 'one', 'two' ]
美好的时光总是短暂的,没过多久,人们就开始抱怨:“哦,我的上帝,为什么我只能将键转换为数组,我想要值”。
ES2017 - Object.values
嗨,我是 ES2017,我可以实现你所有的愿望。通过 ES2017 提供的 Object.values
方法,你现在可以轻松的将值提取到数组中。
const numbers = {
one: 1,
two: 2
Object.values(numbers);
// [ 1, 2 ]
ES2017 - Object.entries
不仅于此,ES2017还提供了另外一个方法,可以同时将键值提取到数组中。
const numbers = {
one: 1,
two: 2
Object.entries(numbers);
// [ ['one', 1], ['two', 2] ]
Object.entries
+ 解构
Object.entries
提取出来的是一个嵌套数组,我们可以使用解构来获取数组中的值。
const numbers = {
one: 1
const objectArray = Object.entries(numbers);
objectArray.forEach(([key, value]) => {
console.log(key); // 'one'
console.log(value); // 1
浏览器兼容性
Object.keys
的兼容性较好,重要的是它支持IE。Object.values
和 Object.entries
不支持 IE,但是可以使用 polyfill 来进行支持。
等等,还有...
上面我们已经介绍了如何将对象转化为数组,那么如何将数组转化为对象呢?不用担心,JavaScript 已经提供了一个新方法 Object.fromEntries
可以将数组转化为对象,它的作用与 Object.entries
相反。
const array = [
[ 'one', 1 ],
[ 'two', 2 ]
Object.fromEntries(array);
// { one: 1, two: 2 }
js中类数组对象以及类数组转换的方法(ES6, ES5)
类数组(Array-like)对象,通常我们可以把拥有一个length属性和非负整数属性的对象称为类数组对象
JavaScript 数组与一般对象的区别:
当有新元素添加到列表中时,自动更新 length 属性
设置 length 属性值为一个较小值会截断数组
从 Array.prototype 中继承一些有用的方法
类属性为「Array」
注:类数组对象的length不会自动更新
常见的类数组对象有:
document.getElements
工作中遇到了一些问题 需要将数组转化为对象
// arr to obj
const arr = [{date:"2018-11-18",name:"demo1"},{date:"2018-11-19",name:"demo2"}];
const obj = {
"2018-11-18":"demo1",
"2018-11-19":"demo2"
只包含使用从0开始的,并且是自然递增的整数作为键,还定义了length用来表示元素个数的对象,通常就认为是类数组对象。
具有:指向对象元素的数字索引下标,以及 length 属性告诉我们对象的元素个数;
不具有:比如像push 、 forEach 以及 indexOf 等数组对象具有的方法;
var obj = {
0: 'a',
1: 'b',