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

如何在不遍历主数组的情况下移除嵌套结构中的isCorrect属性

需求描述

我有一个包含对象的数组,希望在不手动遍历主数组且不将属性值改为false的前提下,移除所有键为"isCorrect"的属性。

示例数组

[ { "arrangement": 1, "question": "mijn", "answers": [ { "answer": "nmiou", "isCorrect": true }, { "answer": "nkj", "isCorrect": false }, { "answer": "nk", "isCorrect": false }, { "answer": "jln", "isCorrect": false } ] }, { "arrangement": 2, "question": "kjn", "answers": [ { "answer": "kjn", "isCorrect": true }, { "answer": "kj", "isCorrect": false }, { "answer": "nkj", "isCorrect": false }, { "answer": "n", "isCorrect": false } ] }, { "arrangement": 3, "question": "jn", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false }, { "answer": "nn", "isCorrect": false } ] }, { "arrangement": 4, "question": "n", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false } ] }, { "arrangement": 5, "question": "n", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false } ] }, { "arrangement": 6, "question": "nn", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false } ] }, { "arrangement": 7, "question": "n", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false } ] }, { "arrangement": 8, "question": "n", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "nkokj", "isCorrect": false }, { "answer": "nj", "isCorrect": false }, { "answer": "nkj", "isCorrect": false } ] }, { "arrangement": 9, "question": "n", "answers": [ { "answer": "njk", "isCorrect": true }, { "answer": "nkjn", "isCorrect": false }, { "answer": "jk", "isCorrect": false }, { "answer": "nkj", "isCorrect": false } ] }, { "arrangement": 10, "question": "i", "answers": [ { "answer": "i", "isCorrect": true }, { "answer": "ii", "isCorrect": false }, { "answer": "i", "isCorrect": false }, { "answer": "i", "isCorrect": false } ] } ]

补充说明

用手动循环可以实现需求,但会消耗额外的时间与性能。以下是仅修改属性值的示例代码(非目标实现):

let primaryArray = [ { "arrangement": 3, "question": "jn", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false }, { "answer": "nn", "isCorrect": false } ] }, { "arrangement": 4, "question": "n", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false } ] }, { "arrangement": 5, "question": "n", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false } ] }, { "arrangement": 6, "question": "nn", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false } ] }, { "arrangement": 7, "question": "n", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false }, { "answer": "n", "isCorrect": false } ] }, { "arrangement": 8, "question": "n", "answers": [ { "answer": "n", "isCorrect": true }, { "answer": "nkokj", "isCorrect": false }, { "answer": "nj", "isCorrect": false }, { "answer": "nkj", "isCorrect": false } ] }, { "arrangement": 9, "question": "n", "answers": [ { "answer": "njk", "isCorrect": true }, { "answer": "nkjn", "isCorrect": false }, { "answer": "jk", "isCorrect": false }, { "answer": "nkj", "isCorrect": false } ] }, { "arrangement": 10, "question": "i", "answers": [ { "answer": "i", "isCorrect": true }, { "answer": "ii", "isCorrect": false }, { "answer": "i", "isCorrect": false }, { "answer": "i", "isCorrect": false } ] } ]

primaryArray.map((q)=>{
  q.answers[0].isCorrect = false;
})
console.log(primaryArray)

解决方案

完全避免遍历是不现实的,但可以利用原生API的高效实现替代手动循环,既满足“不手动遍历主数组”的要求,又能高效移除目标属性。

方法1:利用JSON.stringify的替换器参数

通过JSON.stringify的replacer函数过滤掉isCorrect属性,再将字符串转回对象。原生JSON处理由引擎底层实现,性能通常优于手动循环:

const processedArray = JSON.parse(JSON.stringify(primaryArray, (key, value) => {
  if (key === 'isCorrect') return undefined;
  return value;
}));
console.log(processedArray);

说明:

  • 该方法会创建原数组的深拷贝,不会修改原数组
  • 无需手动编写循环逻辑,代码简洁

方法2:使用数组高阶方法隐式遍历

如果允许使用数组内置的高阶方法(内部仍会遍历,但无需手动编写循环),可以结合对象解构精准移除属性:

const processedArray = primaryArray.map(item => ({
  ...item,
  answers: item.answers.map(ans => {
    const { isCorrect, ...rest } = ans;
    return rest;
  })
}));
console.log(processedArray);

说明:

  • 同样是深拷贝,不修改原数组
  • 代码逻辑直观,便于后续维护,性能与原生JSON方法接近

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:35:22