我正在尝试编写一个函数,该函数将接受两个对象(在本例中为人),并且仅交换它们的两个属性。这是我的 Person 函数:
function Person (tall, weight, gender, iq, favoriteColor) {
this.tall = tall;
this.weight = weight;
this.gender = gender;
this.iq = iq;
this.favoriteColor = favoriteColor;
}
var joe = new Person("6-2", 180, "male", 130, "blue");
var bob = new Person("5-11", 150, "male", 120, "red");
所以我想交换他们的智商和最喜欢的颜色。
到目前为止我已经:
function Swap(a, b) {
var i = a;
a = b;
b = i;
console.log(a, b);
}
这显然交换了它们的所有属性,但我无法弄清楚如何仅交换两个属性并仍然将它们记录为对象。我尝试过:
function Swap(a, b) {
var a = a.iq + a.favoriteColor;
var b = b.iq + b.favoriteColor;
var i = a;
a = b;
b = i;
console.log(a, b);
}
但这会返回到控制台:
120red 130blue.
从技术上讲,它交换了两个值,但它们作为对象的结构消失了,它们应该保留的其他三个属性也消失了。如何编写交换函数来执行此操作?
谢谢!
最佳答案
这就是你想要的。您需要交换各个字段。您无法像现在一样添加它们。另外,最好不要对已经声明的变量使用相同的名称,这太困惑了。
function Swap(a, b) {
var i = a.iq;
a.iq = b.iq;
b.iq = i;
i = a.favoriteColor;
a.favoriteColor= b.favoriteColor;
b.favoriteColor = i;
console.log(a, b);
}
关于javascript - 用javascript中的函数交换对象的两个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574428/