对象遍历
对象{键:值}
object.keys()会返回对象中键的数组
object.values()会返回对象中值的数组
Object.entries() 是返回一个给定对象自身可枚举属性的键值对数组
var var obj = {a:1,b:2,c:4}; //目标对象
console.log("索引"+Object.keys(obj));
console.log("价值"+Object.values(obj));
console.log("entries输出"+Object.entries(obj));
输出
索引a,b,c
价值1,2,4
entries输出a,1,b,2,c,4
可以使用Object.keys()收集keys,然后通过 key 去对象取对应的值:
var var obj = {a:1,b:2,c:4}; //目标对象
for(let key of Object.keys(obj))
{
let m = obj[key];
console.log(m);
}
输出
1
2
4
Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for…in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)。
Object.entries() 返回键值对数组,如 [ [key1, value1], [key2, value2], …, [keyN, valueN] ]。
var var obj = {a:1,b:2,c:4}; //目标对象
for(let [key , value] of Object.entries(obj))
{
console.log(key+':'+value);
}
输出
a:1
b:2
c:4
对象合并
Object.assign可以实现对象的合并。
Object.assign(target, …sources)
- Object.assign会将source里面的可枚举属性复制到target,如果和target的已有属性重名,则会覆盖。
- 后续的source会覆盖前面的source的同名属性。
- Object.assign复制的是属性值,如果属性值是一个引用类型,那么复制的其实是引用地址,就会存在引用共享的问题。
var target = {a : 1}; //目标对象
var source1 = {b : 2}; //源对象1
var source2 = {c : 3}; //源对象2
var source3 = {c : 4}; //源对象3,和source2中的对象有同名属性c
var obj = Object.assign(target,source1,source2,source3);
console.log(obj);
输出
{a: 1, b: 2, c: 4}