求个js数组算法

题目描述

从一个不定长度的数组里面均匀取出指定百分比系数个元素返回一个新数组,新数组必须包含不定长度数组的第一个和最后一个元素

阅读 2.1k
3 个回答
var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];

function getSubArr(arr , percent){
    // 确定间隔
    let interval =parseInt( arr.length * percent *0.01);
    // 返回数组
    let backArr = [];
    backArr = arr.filter((item,index)=>{
        return (index+2) % interval === 0
    })
    // 确定需不需添加最后一项
    let hasEnd = (arr.length-1) % interval === 0 ;
    return backArr = hasEnd ? backArr : backArr.concat(arr[arr.length -1])
}

console.log(getSubArr(a,10))

按我的理解是:
// 新数组包含老数组的第一项、最后一项和满足条件的那些项
let arrNew = arrOld.filter((item,index) => {

if(index === 0 || index === arrOld.length) return true;
return xxx //xxx为满足的条件 

})

function average(arr,pd){
  var newArr=[];
  pd = 1/(pd.slice(0,pd.length-1)/100); //平均递增值
  var ave = arr.length/pd; //生成个数
  pd = Math.ceil(pd); //上取整
  newArr.push(arr[0]);
  for(var i=1;i<arr.length;i++){
    if(newArr.length+1>=ave)
      break;
    if(i%pd==0) {newArr.push(arr[i])}; //整除
  }
  newArr.push(arr[arr.length-1]);
  return newArr;
} 
average(a,'33%');
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题