这个 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
回调中通常有点代码味道。
我在一个项目中遇到了一段代码,我觉得很难理解:
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
回调中通常有点代码味道。