css 正在将forEach转换为Map

avwztpqn  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(150)

有些人说这个函数里面的forEach不好,我应该使用map。所以,我想知道我该如何使用map

有些人说这个函数里面的forEach不好,我应该使用maps。所以,我想知道我该如何使用maps:* 我还希望这是一个可重用的函数,这样我就可以在任何地方调用它 *

我如何使这段代码更干净。没有Jquery

JS:

const about = document.getElementById('about');
const numbers = document.querySelectorAll('.number');
const svgEl = document.querySelectorAll('svg circle');
const counters = Array(numbers.length);
const intervals = Array(counters.length);
counters.fill(0);

function moveprogressbar() { numbers.forEach((number, index) => {
    intervals[index] = setInterval(() => {
        if(counters[index] === parseInt(number.dataset.num)){
            clearInterval(counters[index]);
        } else{
            counters[index] += 1;
            number.textContent = counters[index] + "%";
            svgEl[index].style.strokeDashoffset = Math.floor(472 - 440 * parseFloat(number.dataset.num / 100));
        }
    }, 20);
 });
}
n1bvdmb6

n1bvdmb61#

只需使用map关键字更改forEach以使用map,而不像forEach,map将返回一个新数组,但如果您只是想迭代,我认为forEach优于map

const about = document.getElementById('about');
const numbers = document.querySelectorAll('.number');
const svgEl = document.querySelectorAll('svg circle');
const counters = Array(numbers.length); 
const intervals = Array(counters.length);
counters.fill(0);
let numberArray =[]
numberberArray.push[numbers]
function moveprogressbar() { numberArray.map((number, index) => {
intervals[index] = setInterval(() => {
    if(counters[index] === parseInt(number.dataset.num)){
        clearInterval(counters[index]);
    } else{
        counters[index] += 1;
        number.textContent = counters[index] + "%";
        svgEl[index].style.strokeDashoffset = Math.floor(472 - 440  
* parseFloat(number.dataset.num / 100));
    }
   }, 20);
 });
}
kmbjn2e3

kmbjn2e32#

只是简单地使用map关键字而不是forEach

function moveprogressbar() { numbers.map((number, index) => {
        intervals[index] = setInterval(() => {
        if(counters[index] === parseInt(number.dataset.num)){
         clearInterval(counters[index]);
         } else{
        counters[index] += 1;
        number.textContent = counters[index] + "%";
       svgEl[index].style.strokeDashoffset = Math.floor(472 - 440 * parseFloat(number.dataset.num / 100));
               }
           }, 20);
        });
       }

相关问题