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

如何遍历对象属性值而非键名,为activity.change赋值?

搞定遍历对象值的问题

嘿,我一眼就get到你的问题啦——你用Object.keys(changes)拿到的是对象的键名字符串数组(比如['description', 'name']),所以map里的i是键名,不是你要的属性值。给你几个简单的解决思路:

方案1:通过键名取对应值

直接在遍历里用changes[i]拿到键对应的属性值,再赋值给activity.change就行:

Object.keys(changes).map(i => {
  activity.change = changes[i]; // 这里用changes[i]获取真正需要的值
  this.addINDB(activity);
});

不过友情提醒:如果你的代码只是遍历执行副作用(比如调用addINDB),用forEach比map更合适——毕竟map的本职工作是返回新数组,你这里不需要返回值,forEach语义更清晰:

Object.keys(changes).forEach(i => {
  activity.change = changes[i];
  this.addINDB(activity);
});

方案2:直接遍历属性值(更简洁)

如果你完全不需要键名,只想拿到所有属性值,直接用Object.values(changes)就好,它会直接返回所有值的数组,遍历的时候拿到的就是你要的对象:

Object.values(changes).forEach(value => {
  activity.change = value;
  this.addINDB(activity);
});

额外小技巧:如果要同时用键和值

万一后续逻辑需要同时用到键名和对应值,用Object.entries(changes)准没错,它返回的是[键名, 值]的二维数组,解构一下就能同时拿到两个变量:

Object.entries(changes).forEach(([key, value]) => {
  activity.change = value;
  // 要是需要用键名的话,直接用key变量就行
  this.addINDB(activity);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:04:45