如何在1 for()循环中迭代多个对象键

时间:2016-05-11 16:20:20

标签: javascript object for-loop

x = {a:1,b:2}
y = {c:3,d:4}

for (k in x+y) {
  console.log(k)
}

期望的输出:

a
b
c
d

我更习惯Python,在这种情况下这会更容易,但Javascript似乎不允许我这样做。我想以最简单的方式来做这件事,因为简单就是幸福。如果我不能简单地做到这一点,我担心我可能需要将x和y组合成1个对象并为每个键添加一个“类型”键,以便我可以通过它们进行过滤,但我认为过滤后的密钥作为自己的顶级对象更具可读性。

2 个答案:

答案 0 :(得分:3)

您可以使用两个循环并将代码移动到函数中以避免重复。

function iteration(key) {
  // ...
}
for (var key in x) iteration(key);
for (var key in y) iteration(key);

或者将两个对象合并为一个新对象

for (var key in Object.assign({}, x, y) {
  // ...
}

答案 1 :(得分:0)

所以我只想找到一个有趣的解决方法,类似于Object.assign方式,但没有为它创建新对象。

实际上,您可以同时对两个对象进行for/in循环,并按照与Object.assign()相同的方式对它们进行排序,以获得相同的结果。

举个例子:

var x = {a:1,b:2};
var y = {c:3,d:4};

// only since you want them in alphabetical order,
// same as I do obviously, you can do the following:

for(var key in x, y) {
  x[key] = y[key];
}

给出了这个输出:

x = {
  "a": 1,
  "b": 2,
  "c": 3,
  "d": 4
}