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

Javascript 如何在1 for()循环中迭代多个对象键,javascript,object,for-loop,Javascript,Object,For Loop,期望输出: x = {a:1,b:2} y = {c:3,d:4} for (k in x+y) { console.log(k) } 我更习惯于Python,在这种情况下这会更容易,但Javascript似乎不允许我这么做。我想用最简单的方法来做这件事,因为简单就是幸福。如果我不能简单地做到这一点,我担心我可能需要将x和y组合成一个对象,并为它们的每个键添加一个“type”键,这样我就可以根据它们进行过滤,但我认为将预过滤键作为它们自己的顶级对象更具可读性 您可以使用两个循环并将代码移

期望输出:

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

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

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

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

a
b
c
d
或者将两个对象合并为一个新对象

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

因此,我刚刚想出了一个有趣的解决方法,类似于
对象。分配
方式,但不为其创建新对象

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

以你为例:

for (var key in Object.assign({}, x, y) {
  // ...
}
这将为您提供以下内容的输出:

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];
}

先合并对象?有没有一个简单的方法可以做到这一点?在Python中,我可以通过执行x+y来合并两个列表,但JavaScript似乎不能做到这一点。遗憾的是,语法并不能以这种方式从一种编程语言传递到另一种编程语言,尽管如此,您仍然可以按照java脚本理解的方式来传递逻辑有许多替代方案,其中最基本的可能是
Object.keys(x).concat(Object.keys(y))
。如果您正确地希望将对象或值发送到函数
迭代
中,则当两个对象中都存在特定键时,合并将不幸地导致一个键。
x = {
  "a": 1,
  "b": 2,
  "c": 3,
  "d": 4
}