Javascript 交换对象上两个属性的值
我正在尝试创建一个简单的函数,它将交换相同或不同全局对象上两个属性的值Javascript 交换对象上两个属性的值,javascript,Javascript,我正在尝试创建一个简单的函数,它将交换相同或不同全局对象上两个属性的值 object1 = {"key 1":"value 1"}; object2 = {"key 2":"value 2"}; swapValuesInObject ("object1['key 1']","object2['key 2']",true) // should result in: // object1 === {"key 1":"value 2"}; // object2 === {"key 2":"value
object1 = {"key 1":"value 1"};
object2 = {"key 2":"value 2"};
swapValuesInObject ("object1['key 1']","object2['key 2']",true)
// should result in:
// object1 === {"key 1":"value 2"};
// object2 === {"key 2":"value 1"};
另一个例子:
object1 = {"key 1":"value 1", "key 2":"value 2"};
swapValuesInObject ("object1['key 1']","object1['key 2']",1===1)
// should result in:
// object1 === {"key 1":"value 2", "key 2":"value 1"};
这是我到目前为止能想到的,但不多。在如何做作业上被挂断了
function swapValuesInObject(property1, property2, condition) {
if (condition) {
// temp assignment
var Obj1Value = property1;
// do the switcheroo
array1 = array2Value;
array2 = array1Value;
}
return true;
};
做这件事的正确方法是什么?我会按如下方式做:
var obj1 = {
"key1" : "value1",
"key2" : "Value2"
};
var obj2 = {
"key3" : "value3",
"key4" : "Value4"
};
function swap(sourceObj, sourceKey, targetObj, targetKey) {
var temp = sourceObj[sourceKey];
sourceObj[sourceKey] = targetObj[targetKey];
targetObj[targetKey] = temp;
}
swap(obj1, "key1", obj1, "key2");
swap(obj1, "key1", obj2, "key4");
使用ES6解构,您现在可以在不使用临时变量的情况下进行交换。这不仅适用于在
[a,b]=[b,a]
中交换变量值,而且适用于涉及对象属性的更复杂的表达式,如:[obj.key1,obj.key2]=[obj.key2,obj.key1]
。为避免更多冗余,您需要使用交换功能:
function swap(obj, key1, key2) {
[obj[key1], obj[key2]] = [obj[key2], obj[key1]];
}
swap(obj, 'key1', 'key2');
同样的想法适用于两个对象和两个关键点:
function swap(obj1, key1, obj2, key2) {
[obj1[key1], obj2[key2]] = [obj2[key2], obj1[key1]];
}
swap(obj1, 'key1', obj2, 'key2');