在实际开发中,我们有时需要知道对象的所有属性,所以就用到了Object.keys()方法
一、Object.keys()
传入对象 返回属性值
const actions = {
id: 'delete',
title: '删除',
danger: true,
confirm: true,
};
const getActions = () => {
Object.keys(actions).forEach(key => {
console.log(key,actions[key]); //key=>属性名 actions[key]=>属性值
};
传入字符串 返回索引
var str = 'ab1234';
console.log(Object.keys(str)); //[0,1,2,3,4,5]
传入数组 返回索引
var arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // console: ["0", "1", "2"]
二、Object.assign(target, source_1, ···)
定义
:用于将源对象
的所有可枚举属性复制
到目标对象
中。
如果目标对象
和源对象
有同名属性,则后面的属性会覆盖前面的属性。
assign 的属性拷贝是浅拷贝
let target = {a: 1};
let object2 = {b: 2};
let object3 = {c: 3};
// 第一个参数是目标对象,后面的参数是源对象
Object.assign(target,object2,object3);
console.log(target); // {a: 1, b: 2, c: 3}
如果该函数只有一个参数,当参数为对象时,直接返回该对象;当参数不是对象时,会先将参数转为对象然后返回
因为 null 和 undefined 不能转化为对象,所以会报错。
当参数不止一个时,null 和 undefined 不放第一个,即不为目标对象时,会跳过 null 和 undefined ,不报错。
三、Object.values()
Object.values
方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值。
const obj = { foo: 'bar', baz: 13 };
Object.values(obj)
// ["bar", 13]
四、Object.entries()
Object.entries()
方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组。
const obj = { foo: 'bar', baz: 13 };
Object.entries(obj)
// [ ["foo", "bar"], ["baz", 13] ]
除了返回值不一样,该方法的行为与Object.values
基本一致。
如果原对象的属性名是一个 Symbol 值,该属性会被忽略。
五、Object.fromEntries()
Object.fromEntries()
方法是Object.entries()
的逆操作,用于将一个键值对数组转为对象。
Object.fromEntries([
['foo', 'bar'],
['baz', 13]
])
// { foo: "bar", baz: 13 }
该方法的主要目的,是将键值对的数据结构还原为对象,因此特别适合将 Map 结构转为对象。
拓展:
删除对象中某一属性
const car = {
color: 'white',
name: '欧陆',
num:1,
}
//delete写法
delete car.num
//es6写法
let { num, ...params } = car;
console.log(params) // {color: 'white', name: '欧陆'}