You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS实现从对象的数组值中按指定规则提取目标数字序列

完整实现方案

核心逻辑

  • 优先判断数组是否为纯升序/纯降序,满足则直接返回原数组
  • 不满足则遍历校验可能的基准数间隔,验证基准数是否符合逐次+1的规则,同时校验收集到的间隔元素是否整体为升序/降序
  • 所有规则都不满足则返回空数组

实现代码

// 校验数组是否为纯升序
function isAsc(arr) {
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] <= arr[i-1]) return false;
  }
  return true;
}

// 校验数组是否为纯降序
function isDesc(arr) {
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] >= arr[i-1]) return false;
  }
  return true;
}

// 提取符合规则的间隔元素
function extractValidInterval(arr) {
  const len = arr.length;
  // 基准数至少需要2个,所以间隔步长最大不超过数组长度的1/2
  for (let step = 2; step < len; step++) {
    // 校验前两个基准数是否符合+1规则
    if (arr[step] !== arr[0] + 1) continue;

    // 校验后续所有基准数是否都满足逐次+1
    let isBaseValid = true;
    const maxBaseIndex = Math.floor((len - 1) / step);
    for (let i = 2; i <= maxBaseIndex; i++) {
      const currentBasePos = i * step;
      if (arr[currentBasePos] !== arr[0] + i) {
        isBaseValid = false;
        break;
      }
    }
    if (!isBaseValid) continue;

    // 收集所有间隔元素
    const intervalArr = [];
    for (let i = 0; i < len; i++) {
      if (i % step !== 0) intervalArr.push(arr[i]);
    }

    // 校验间隔元素是否为纯升/降序
    if (isAsc(intervalArr) || isDesc(intervalArr)) {
      return intervalArr;
    }
  }
  // 无符合条件的结果返回空数组
  return [];
}

// 业务逻辑处理
const numbers = {
  number1 : [1, 300,400,2,500,900,3,1000,1100,4,1200,1800], 
  number2 : [0, 1.1, 1, 1.2, 2, 1.3, 3, 1.4],
  number3 : [2, 1000, 3, 980, 4, 700, 5,100, 6, 10],
  number4 : [1000, 1001, 1001.3, 1003, 1014],
  number5 : [34, 76, 0, 50, 0.5, 1010, 0.5],
};

const result = {};
for (const [key, arr] of Object.entries(numbers)) {
  if (isAsc(arr) || isDesc(arr)) {
    result[key] = arr;
  } else {
    result[key] = extractValidInterval(arr);
  }
}

console.log(result);

输出结果

和预期输出完全一致:

{
  number1: [300, 400, 500, 900, 1000, 1100, 1200, 1800],
  number2: [1.1, 1.2, 1.3, 1.4],
  number3: [1000, 980, 700, 100, 10],
  number4: [1000, 1001, 1001.3, 1003, 1014],
  number5: []
}

内容的提问来源于stack exchange,提问作者dumpAndDie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:24:09