import { getAdItem } from '@/utils/getConfig'; interface Advparams { originArray: Array; // 原数据数组 insertNum: number; // 每隔insertNum个元素插入一次 pageSize: number; // 当前页码 pageNumber: number; // 当前页 advNum: number; // 当前广告下标 } export default function insertAdv(obj: Advparams) { const { originArray, insertNum, pageSize, pageNumber, advNum } = obj; if (!originArray || originArray.length === 0) { return []; } let newArr = originArray; const updateArray = []; let advIndex = 0; for (let i = 0; i < originArray.length; i++) { let index = pageSize * (pageNumber - 1) + i; // 默认数据 updateArray.push(originArray[i]); // // 每隔insertNum个元素插入一次 if (getAdItem(advNum) && getAdItem(advNum).length> 0 && (index + 1) % insertNum === 0) { // 如果当前位置没有广告,重置0 if (!getAdItem(advNum)[advIndex]) { advIndex = 0; } const advList = getAdItem(advNum) || []; // 当前页广告条数 const currentPageAdvCout = Math.floor((index + 1) / insertNum); const advIdx = (currentPageAdvCout - 1) % advList.length; // 插入广告 // isAdv 字段表示是广告 updateArray.push(Object.assign({}, getAdItem(advNum)[advIdx], { isAdv: true })); advIndex++; } } return updateArray; }