对象合并
1.ES6在Object新加的方法 assign()
1.作用:将多个对象{} 合并成一个独立对象。
2.使用方式:
Obejct.assign(合并的对象,传入合并中的对象....)
let user = {name:'无敌人',age:19};
let page = {pageSize:10,currentPage:1};
let newObj = {};
Object.assign(newObj,user,page);
2、方法二
var obj = { name: 'coco' }
var obj1 = { age: 27 }
var newObj = { ...obj, ...obj1 };
console.log(newObj); // { name: "coco", age: 27 }
3、方法三
// 合并对象
function extend(target, source) {
for (var obj in source) {
target[obj] = source[obj];
}
return target;
}
// 测试
var a = {a: 1, b: 2};
var b = {a: 2, b: 3, c: 4};
var c = extend(a, b);
console.log(c);
4、方法四
jQuery
:$.extend(obj1,obj2)
var obj1 = {'a': 1};
var obj2 = {'b': 1};
var obj3 = $.extend(obj1, obj2)//console.log(obj3); // {a: 1, b: 1} obj1已被修改
或
var obj3 = $.extend({}, obj1, obj2)//console.log(obj3); //{a: 1, b: 1} 不会改变obj1,obj2
5、方法五:
var obj1={'a':1};
var obj2={'b':2,'c':3};
for(var key in obj2){
if(obj2.hasOwnProperty(key)===true){//只遍历对象自身的属性,而不包含继承于原型链上的属性,此处hasOwnProperty是判断自有属性,使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问会避免原型对象扩展带来的干扰
obj1[key]=obj2[key];
}
}
console.log(obj1);//{'a':1,'b':2,'c':3};
使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问:
例:obj={"name":"wjy","age":26,"sex":"female"};//定义一个object对象 var keys=[];//定义一个数组用来接受key var values=[];//定义一个数组用来接受value for(var key in obj){ keys.push(key); values.push(obj[key]);//取得value } alert("keys is :"+keys+" and values is :"+values); //keys is : name,age,sex,bar and values is : wjy,26,female,10 ```
使用 hasOwnProperty 方法, 这将会避免原型对象扩展带来的干扰:
例:var keys=[]; var values=[]; for(var key in obj){ //只遍历对象自身的属性,而不包含继承于原型链上的属性。 if (obj.hasOwnProperty(key) === true){ keys.push(key); values.push(obj[key]); } } alert("keys is :"+keys+" and values is :"+values); } Object.prototype.bar = 1;// 修改Object.prototype var o={"name":"wjy","age":26,"sex":"female"};//定义一个object对象 allpro(o); //keys is : name,age,sex and values is: wjy,26,female ```
删除对象
例1:
var person={"name": "xiaojiayu", "age": 24, "gender": "man"};
delete person.age
例2:
var str={
name:"lili",
age:12,
sex:"女"
};
//遍历
$.each(str,function(_key){
var key = _key;
var value =str[_key];
if(_key=="age")
{ //删除
delete str[_key];
}
});
$.each(str,function(_key){
console.log("删除后的结果:"+_key+"=="+str[_key]+"\r\n");
});