function callOnceInArray(arr, fn) {
const called = {};
arr.forEach(item => {
if (!called[item]) {
fn(item);
called[item] = true;
}
});
}
const items = [1,2,3,2,5,4,5,2,4,5];
const logItem = item => console.log(item);
callOnceInArray(items, logItem);
结果展示:
①callOnceInArray
函数接受一个数组 arr
和一个要调用的函数 fn
。
②用 called
对象来跟踪哪些元素已经被 fn
函数调用过。
③如果一个元素之前没有被调用过,那么它将被传递给 fn
函数,并标记为已调用过。
如果已经被调用过,则不会再次调用 fn
函数。
④这确保了每个独特的元素只会被 fn
函数调用一次,即使它在数组中出现多次。