【发布时间】:2022-12-09 10:12:34
【问题描述】:
我家里有 3 个人 ['John', 'Jane', 'Jack'],
我们跟踪谁打开/关闭了门。
logs = [
{ name: "John", status: "opened" },
{ name: "Jane", status: "opened" },
{ name: "Jack", status: "opened" },
{ name: "Jane", status: "closed" },
{ name: "Jack", status: "closed" },
];
如您所见,只有 2 个人['Jane', 'Jack']正确地打开和关闭了门。
以编程方式,我执行了这 3 个步骤来知道约翰是打开门但从未关闭门的人。
let openers = logs.reduce((acc, log) => {
if (log.status === "opened") {
acc.push(log.name);
}
return acc;
}, []);
console.log(openers);
let closers = logs.reduce((acc, log) => {
if (log.status === "closed") {
acc.push(log.name);
}
return acc;
}, []);
console.log(closers);
let result = [];
closers.forEach((closer) => {
if (openers.includes(closer)) {
result.push(closer);
}
});
console.log(result);
我试图一次性完成这些reduce(),但我不太确定。
有人可以帮我改进我得到的东西吗
logs = [
{ name: "John", status: "opened" },
{ name: "Jane", status: "opened" },
{ name: "Jack", status: "opened" },
{ name: "Jane", status: "closed" },
{ name: "Jack", status: "closed" },
];
let openers = logs.reduce((acc, log) => {
if (log.status === "opened") {
acc.push(log.name);
}
return acc;
}, []);
console.log(openers);
let closers = logs.reduce((acc, log) => {
if (log.status === "closed") {
acc.push(log.name);
}
return acc;
}, []);
console.log(closers);
let result = [];
closers.forEach((closer) => {
if (openers.includes(closer)) {
result.push(closer);
}
});
console.log(result);
?
【问题讨论】: