这个 JavaScript 代码试图做什么?

What does this JavaScript code trying to do?

我在一个项目中遇到了一段代码,我觉得很难理解:

let isSelected = false;
const results = items.filter(Boolean).map(item => {
  isSelected = !isSelected && id === item.id;
  return {
    id: item.id,
    name: item.name
  };
});

return 之前的行 isSelected = !isSelected && id === item.id; 是什么意思?

谢谢。

这是一种令人困惑的方式,在通过数组进行映射时,如果数组中的任何元素与 ID 匹配,也会将 isSelected 设置为 true。

等效的方法是

const truthyItems = items.filter(Boolean);
const results = truthyItems.map(item => ({
  id: item.id,
  name: item.name
}));
const isSelected = truthyItems.some(item => item.id === id);

Side-effects 在 .map 回调中通常有点代码味道。