JavaScript中对象Object的方法使用

805 阅读2分钟

Object

  1. 判断数据Object是否为空
`Object.keys(obj)`

let data = {}

//将json对象转化为json字符串,再判断该字符串是否为"{}"
alert(JSON.stringify(data) === "{}")//true

// 获取data中的键名key,为空则表明data为{}
var arr = Object.keys(data);
alert(arr.length === 0);//true
  1. 判断一个对象的键值对的所有值是不是都为空
`Object.values(obj)`

let data = {  name: "1",  value: "2", value2: ""}
let rlt = true
// 获取data中每项的键值
let value_arr = Object.values(data) // ["1", "2", ""]
// 过滤掉为空的项
value_arr.filter(item => item !== "") // ["1", "2"]
// 循环判断是否存在为空的项,用于校验(forEach不存在return后返回值)
value_arr.forEach(item => {
    if (item === "") {
        rlt = false
    }
})
  1. 将Object对象转换为二维数组进行循环输出
`Object.entries(obj)`

该方法返回对象 `obj` 自身的可枚举属性的键值对数组。结果是一个二维数组,
数组中的元素是一个由两个元素 `key` ,`value` 组成的数组。


let person = {name:"xie",age:18}
let arr = Object.entries(person)
console.log(arr)//[["name", "xie"],["age", 18]]
arr.forEach(item => {
    console.log(item[0], item[1]) // name(键名), xie(键值)
})

  1. 合并Object
`Object.assign(target,...assign)`

作用:将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
简单来说,该方法可以接收多个参数,其中第一个参数作为目标对象,剩下的都是源对象。
该方法将所有源对象的可枚举属性复制(浅复制)到目标对象中,结果返回目标对象。该方法会直接改变目标对象。


const target = {name:"xie",age:18};
const source = {address:"zh", gender:"男"}
Object.assign(target,source);
console.log(target);//{name: "xie", age: 18, address: "zh", gender: "男"}

let obj2 = Object.assign({}, source)
console.log(obj2);//{address: "zh", gender: "男"}

如果使用 `ES6` 的语法来实现这种需求就很简洁了:
target = {...target,...source}

三点运算符也是通过浅复制来实现拷贝的。

注意:如果目标对象中的属性具有相同的键,则属性将被源对象的属性覆盖,后面的源对象的属性将类似地覆盖前面的源对象属性。
  1. 方法把键值对列表转换为一个对象。
` Object.fromEntries()  ` 

[ `Map` 转化为 `Object`]
const map = new Map([ ['foo', 'bar'], ['baz', 42] ]);
const obj = Object.fromEntries(map);
console.log(obj); // { foo: "bar", baz: 42 }


[`Array` 转化为 `Object`]
const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
const obj = Object.fromEntries(arr);
console.log(obj); // { 0: "a", 1: "b", 2: "c" }


[对象转换]
`Object.fromEntries` 是与 [`Object.entries()`] 相反的方法,用 [数组处理函数]可以像下面这样转换对象:
const object1 = { a: 1, b: 2, c: 3 };
const object2 = Object.fromEntries(
  Object.entries(object1)
  .map(([ key, val ]) => [ key, val * 2 ])
);

console.log(object2);
// { a: 2, b: 4, c: 6 }