如何将 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;
}
我的代码如下:
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;
}