js Object常用的方法

发布时间 2023-12-11 15:42:40作者: icey-Tang

Object.keys(obj)

Object.keys(obj):返回对象自身所有可枚举属性的键名数组

  1. 处理对象,返回可枚举的键数组
const object1 = {
  a: 'somestring',
  b: 42,
  c: false
};
console.log(Object.keys(object1));
// 结果: Array ["a", "b", "c"]
  1. 处理数组和字符串,返回索引值数组
let arr = [1,2,3]
Object.keys(arr) // ["0", "1", "2"]

let str = "123字符串"
Object.keys(str) // ["0", "1", "2", "3", "4", "5"]

常用技巧

let person = {name:"张三",age:18,address:"湖南"}
Object.keys(person).map((key)=>{
  person[key] // 获取到属性对应的值,做一些处理
})

Object.values(obj)

Object.values(obj):返回对象自身所有可枚举属性的值数组。(与Object.keys相反)

  1. 处理对象,返回可枚举的属性数组
const object1 = {
  a: 'somestring',
  b: 42,
  c: false
};
console.log(Object.keys(object1));
// 结果: Array ["somestring", 42, false]
  1. 处理数组和字符串,返回值数组(返回本身)
let arr = [1,2,3]
Object.values(arr)
//结果:[1, 2, 3]

let str = "123字符串"
Object.values(str) // ['1', '2', '3', '字', '符', '串']

Object.assign()

Object.assign(target, source1, source2, ...):将源对象的属性复制到目标对象中,并返回目标对象。

参数:
target--->目标对象
source--->源对象
返回值:target,即目标对象

可以用来复制对象的可枚举属性到目标对象,利用这个特性可以实现对象属性的合并。

  1. 基本用法
var target  = {a : 1}; //目标对象
var source1 = {b : 2}; //源对象1
var source2 = {c : 3}; //源对象2
var source3 = {c : 4}; //源对象3,和source2中的对象有同名属性c
Object.assign(target,source1,source2,source3);
//结果如下:
//{a:1,b:2,c:4}

assign的设计目的是用于合并接口的,所以它接收的第一个参数(目标)应该是对象,如果不是对象的话,它会在内部转换成对象,所以如果碰到了null或者undefined这种不能转换成对象的值的话,assign就会报错。但是如果源对象的参数位置,接收到了无法转换为对象的参数的话,会忽略这个源对象参数。