繁体   English   中英

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

[英]How to iterate through multiple object keys in 1 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 个对象,并为它们的每个键添加一个“类型”键,以便我可以通过它们进行过滤,但我认为有预过滤键作为它们自己的顶级对象更具可读性。

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

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) {
  // ...
}

所以我只是想出了一个有趣的解决方法,类似于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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM