如何将 for 语句转换为节点 js 中的 map 或 reduce?

How to covert for statement to map or reduce on node js?

我的代码如下:

const compareTwoObj = (obj1, obj2) => {
  const common = {};
  for (const key of Object.keys(obj2)) {
      if (obj2[key] !== undefined) {
          if (typeof obj1[key] === 'object') {
              common[key] = compareTwoObj(obj1[key], obj2[key]);
          }
          else {
              if (obj1[key] === obj2[key]) {
                  common[key] = obj1[key];
              }
          }
      }
  }
  return common;
}

之后,我在我的node js上写了这段代码。出现错误 interator/generators 需要重新生成器 运行-time 因为 eslint.

因为它 .keys returns 是一个数组,所以你可以在数组上调用 .forEach

但是由于您想同时使用键和值,请考虑改用 Object.entries,其中 returns 一个条目数组(数组形式的键值对) - 你可能会发现它更干净一些。

const compareTwoObj = (obj1, obj2) => {
    const common = {};
    Object.entries(obj2).forEach(([key, value2]) => {
        if (value2 === undefined) return; // don't do anything this iteration
        const value1 = obj1[key];
        if (typeof value1 === 'object') {
            common[key] = compareTwoObj(value1, value2);
        }
        else if (value1 === value2) {
            common[key] = value1;
        }
    });
    return common;
}