javascript - 用javascript中的函数交换对象的两个属性

标签 javascript jquery function object

我正在尝试编写一个函数,该函数将接受两个对象(在本例中为人),并且仅交换它们的两个属性。这是我的 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/

相关文章:

javascript - 表单上的 AJAX 引用错误

javascript - Node.js 包自引用

jquery - 如何检查用户在 javascript 中输入了有效的英文单词

Python:通过函数迭代带有 int(变量)的字符串

java - 在不使用 Collection 作为返回类型的情况下从 java 函数返回多个值?

javascript - 使用 PHP 检测输入内容以重定向到特定页面

javascript - 使用css隐藏第三个div内容

c# - jquery ajax post 到 .aspx 页面加载 - 如何读取发布的变量?

javascript - Iframe 内容未加载到 JQuery 对话框中

JavaScript Bang "!"函数与前导分号 ";"IIFE