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

如何在JavaScript中遍历对象并动态将符合条件的项推入数组?

问题:提取对象中值以"_0"结尾的键值对并整合到数组中的对象

我主要是一名Python开发者,现在尝试用JavaScript解决一个问题。现有如下数据:

const data = {
  name: "james_0",
  hobby: "dev_0",
  country: "usa",
}

我希望将data对象中值以"_0"结尾的键值对整合到一个对象中,再将该对象推入数组,预期结果如下:

const result = [{name: "james_0", hobby: "dev_0"}]

我尝试了以下代码,但似乎存在问题:

const result = []

for (const [key, value] of Object.entries(data)) {
  if (value.endsWith("_0")) {
    result.push({key: value}) // 此处似乎存在问题
  }
}

console.log("result", result)

问题原因

你代码里的问题出在{key: value}这一行——JavaScript里直接写key会把它当成字面量属性名,而不是用变量key的实际值作为属性名。所以循环结束后,你得到的是[{key: "james_0"}, {key: "dev_0"}],和预期的单个对象整合的结果不符。

正确实现方式

方法一:手动循环构建对象

先创建一个空对象来存放符合条件的键值对,循环结束后再把这个对象推入数组:

const data = {
  name: "james_0",
  hobby: "dev_0",
  country: "usa",
}

const result = []
const filteredObj = {}

for (const [key, value] of Object.entries(data)) {
  if (value.endsWith("_0")) {
    filteredObj[key] = value // 用方括号语法把变量key作为属性名
  }
}

result.push(filteredObj)
console.log("result", result) // 输出: [{name: "james_0", hobby: "dev_0"}]

方法二:用Object.fromEntries简化代码

可以用数组方法直接筛选并转换,省去手动循环的步骤:

const data = {
  name: "james_0",
  hobby: "dev_0",
  country: "usa",
}

// 筛选出值以"_0"结尾的键值对,再转成对象,最后放到数组里
const filteredEntries = Object.entries(data).filter(([_, value]) => value.endsWith("_0"))
const result = [Object.fromEntries(filteredEntries)]

console.log("result", result)

说明

  • 方法一中的filteredObj[key] = value,方括号语法会把key变量的实际值(比如"name"、"hobby")作为对象的属性名,这样就能正确把键值对整合到同一个对象里。
  • 方法二中的Object.fromEntries可以把键值对数组直接转换成对象,搭配filter能更简洁地完成筛选和转换操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:24:48