如何遍历对象属性值而非键名,为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
相关产品推荐
相关产品推荐

