I'm trying to make a simple function that will swap the values of two properties on the same or different global objects.
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"};
Another example:
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"};
Here's what I've been able to come up with so far, but it's not much. Getting hung up on how to do the assignment.
function swapValuesInObject(property1, property2, condition) {
if (condition) {
// temp assignment
var Obj1Value = property1;
// do the switcheroo
array1 = array2Value;
array2 = array1Value;
}
return true;
};
What's the proper way to do this?
With ES6 destructuring, you can now swap without a temp variable. This applies to not only swapping variable values as in [a, b] = [b, a]
but more complex expressions involving properties of objects, like so: [obj.key1, obj.key2] = [obj.key2, obj.key1]
. To avoid more redundancy, you need to use a swap function:
function swap(obj, key1, key2) {
[obj[key1], obj[key2]] = [obj[key2], obj[key1]];
}
swap(obj, 'key1', 'key2');
The same idea applies with two objects and two keys:
function swap(obj1, key1, obj2, key2) {
[obj1[key1], obj2[key2]] = [obj2[key2], obj1[key1]];
}
swap(obj1, 'key1', obj2, 'key2');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With