交换对象上两个属性的值
Swap value of two properties on object(s)
我正在尝试制作一个简单的函数,该函数将交换相同或不同全局对象上的两个属性的值。
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;
};
做这件事的正确方法是什么?
使用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');
我会按如下方式进行:
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");
简单地说,
var obj = {
"key1": "value1",
"key2": "Value2"
}
将值1分配给键2&值2到键1
[obj['key1'], obj['key2']] = [obj['key2'], obj['key1']];
相关文章:
- 交换对象上两个属性的值
- 速度.js动画两个属性时持续时间不同
- JQuery选择:两个属性's值不相等
- 在ramda.js中将两个属性合并在一起
- 如何在培根中合并两个属性.js
- 基于两个属性从 javascript 中的对象数组中获取唯一数组
- 如何连接数组中对象的两个属性以用作ngOptions中的标签
- 在同一持续时间内对两个属性进行动画处理
- 使用 Object.defineProperties 提供两个属性
- 在 javascript 中用函数交换对象的两个属性
- 我可以在 D3 中一次指定两个属性吗?
- 角度“ng-repeat” - 如何仅过滤两个属性
- 我可以有两个属性名称相同的对象吗
- Linq.js:按两个属性(字段)分组
- 在量角器中,通过两个属性选择一个元素
- 如何通过两个属性定义元素
- 转换JSON数组的对象,从两个属性值创建新的属性
- 检查一个元素是否存在两个属性
- Javascript排序有两个属性
- 在单个元素上使用new/isolated作用域的两个属性指令