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

如何基于两个JS数组生成由动态键布尔值对象组成的新数组

实现方案

核心思路

利用ES6的计算属性名语法实现用字符串变量作为对象的键,同时将arr2转为Set提升查找效率。

完整代码

let arr1 = ['dog', 'cat', 'mouse']
let arr2 = ['dog']

// 先将arr2转Set,查找时间复杂度为O(1),性能远高于数组includes/indexOf
const set2 = new Set(arr2)
const arr3 = arr1.map(item => ({
  // 方括号包裹变量/表达式,即为计算属性名,会将运行结果作为对象键
  [item]: set2.has(item)
}))

console.log(arr3) // 输出 [{dog: true}, {cat: false}, {mouse: false}]

注意事项

  • 箭头函数直接返回对象时,需要用括号将对象包裹,否则大括号会被识别为函数体的边界,无法正常返回对象
  • 如果需要兼容不支持ES6的旧环境,可以使用传统对象赋值的写法:
let arr3 = []
for (let i = 0; i < arr1.length; i++) {
  let key = arr1[i]
  let obj = {}
  obj[key] = arr2.indexOf(key) !== -1
  arr3.push(obj)
}

内容的提问来源于stack exchange,提问作者karo-s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:15:01