Object
- 判断数据Object是否为空
`Object.keys(obj)`
let data = {}
alert(JSON.stringify(data) === "{}")
var arr = Object.keys(data);
alert(arr.length === 0);
- 判断一个对象的键值对的所有值是不是都为空
`Object.values(obj)`
let data = { name: "1", value: "2", value2: ""}
let rlt = true
let value_arr = Object.values(data)
value_arr.filter(item => item !== "")
value_arr.forEach(item => {
if (item === "") {
rlt = false
}
})
- 将Object对象转换为二维数组进行循环输出
`Object.entries(obj)`
该方法返回对象 `obj` 自身的可枚举属性的键值对数组。结果是一个二维数组,
数组中的元素是一个由两个元素 `key` ,`value` 组成的数组。
let person = {name:"xie",age:18}
let arr = Object.entries(person)
console.log(arr)
arr.forEach(item => {
console.log(item[0], item[1])
})
- 合并Object
`Object.assign(target,...assign)`
作用:将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
简单来说,该方法可以接收多个参数,其中第一个参数作为目标对象,剩下的都是源对象。
该方法将所有源对象的可枚举属性复制(浅复制)到目标对象中,结果返回目标对象。该方法会直接改变目标对象。
const target = {name:"xie",age:18};
const source = {address:"zh", gender:"男"}
Object.assign(target,source);
console.log(target);
let obj2 = Object.assign({}, source)
console.log(obj2);
如果使用 `ES6` 的语法来实现这种需求就很简洁了:
target = {...target,...source}
三点运算符也是通过浅复制来实现拷贝的。
注意:如果目标对象中的属性具有相同的键,则属性将被源对象的属性覆盖,后面的源对象的属性将类似地覆盖前面的源对象属性。
- 方法把键值对列表转换为一个对象。
` Object.fromEntries() `
[ `Map` 转化为 `Object`]
const map = new Map([ ['foo', 'bar'], ['baz', 42] ]);
const obj = Object.fromEntries(map);
console.log(obj);
[`Array` 转化为 `Object`]
const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
const obj = Object.fromEntries(arr);
console.log(obj);
[对象转换]
`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);