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

JavaScript如何按索引筛选对象数组:保留tab1及指定索引对应数组

解决方案

方法一:直接构建新对象(推荐,简洁直观)

直接提取需要保留的tab1和目标tab属性,创建新对象返回,不会修改原数据:

function filterTabs(myArray, index) {
  // 校验索引范围,处理无效输入
  if (index < 2 || index > 4) {
    return { tab1: myArray.tab1 };
  }
  const targetTabKey = `tab${index}`;
  return {
    tab1: myArray.tab1,
    [targetTabKey]: myArray[targetTabKey]
  };
}

// 使用示例
const originalObj = { tab1 : [], tab2 : [], tab3 : [], tab4 : [] };
const result = filterTabs(originalObj, 2);
console.log(result); // 输出:{ tab1: [], tab2: [] }

方法二:拷贝后删除多余属性

先拷贝原对象,再遍历删除不需要的属性,适合需要保留原对象操作逻辑的场景:

function filterTabs(myArray, index) {
  if (index < 2 || index > 4) {
    return { tab1: myArray.tab1 };
  }
  // 浅拷贝原对象,避免修改原数据
  const filteredObj = {...myArray};
  const keepKeys = ['tab1', `tab${index}`];
  
  Object.keys(filteredObj).forEach(key => {
    if (!keepKeys.includes(key)) {
      delete filteredObj[key];
    }
  });
  
  return filteredObj;
}

// 使用示例
const originalObj = { tab1 : [], tab2 : [], tab3 : [], tab4 : [] };
const result = filterTabs(originalObj, 3);
console.log(result); // 输出:{ tab1: [], tab3: [] }

方法三:解构赋值简化写法

利用ES6解构赋值快速提取需要的属性,语法更简洁:

function filterTabs(myArray, index) {
  if (index < 2 || index > 4) {
    return { tab1: myArray.tab1 };
  }
  const targetTabKey = `tab${index}`;
  // 解构出需要的属性,忽略其余
  const { tab1, [targetTabKey]: targetTab, ...rest } = myArray;
  return { tab1, [targetTabKey]: targetTab };
}

// 使用示例
const originalObj = { tab1 : [], tab2 : [], tab3 : [], tab4 : [] };
const result = filterTabs(originalObj, 4);
console.log(result); // 输出:{ tab1: [], tab4: [] }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:27:14