Javascript 如何在对象的元素上执行贴图功能?
我有一个简单的函数,希望进一步简化:Javascript 如何在对象的元素上执行贴图功能?,javascript,Javascript,我有一个简单的函数,希望进一步简化: setAreas(){ this.areas=ipcRenderer.sendSync('request','areas').map(\u area=>{ _area.locations=\u area.locations.map(locationId=>this.getLocation(locationId)) 返回区 }) }一个选项是使用Object.assign,它将返回分配给的基本对象: setAreas() { this.areas = i
setAreas(){
this.areas=ipcRenderer.sendSync('request','areas').map(\u area=>{
_area.locations=\u area.locations.map(locationId=>this.getLocation(locationId))
返回区
})
}
一个选项是使用Object.assign
,它将返回分配给的基本对象:
setAreas() {
this.areas = ipcRenderer.sendSync('request', 'areas').map(_area => (
Object.assign(_area, { locations: _area.locations.map(locationId => this.getLocation(locationId)) })
));
}
但这不太可读。我更喜欢你现在的代码
请注意,.map
适用于将一个数组转换为另一个数组。在这里,您只需要对现有数组中的每个对象进行变异forEach
更合适:
setAreas() {
this.areas = ipcRenderer.sendSync('request', 'areas');
this.areas.forEach((a) => a.locations = a.locations.map(locationId => this.getLocation(locationId)))
}
如果getLocation
只接受一个参数,则可以
a.locations = a.locations.map(locationId => this.getLocation(locationId))
下至
a.locations = a.locations.map(this.getLocation.bind(this))
(如果不需要
此
上下文,您甚至可以删除.bind(this)
)一个选项是使用对象。分配
,它将返回分配给的基本对象:
setAreas() {
this.areas = ipcRenderer.sendSync('request', 'areas').map(_area => (
Object.assign(_area, { locations: _area.locations.map(locationId => this.getLocation(locationId)) })
));
}
但这不太可读。我更喜欢你现在的代码
请注意,.map
适用于将一个数组转换为另一个数组。在这里,您只需要对现有数组中的每个对象进行变异forEach
更合适:
setAreas() {
this.areas = ipcRenderer.sendSync('request', 'areas');
this.areas.forEach((a) => a.locations = a.locations.map(locationId => this.getLocation(locationId)))
}
如果getLocation
只接受一个参数,则可以
a.locations = a.locations.map(locationId => this.getLocation(locationId))
下至
a.locations = a.locations.map(this.getLocation.bind(this))
(如果不需要此上下文,您甚至可以删除.bind(this)
)您可以使用
你可以用
我想“可读的一行”是我的意思。我只是觉得有一个内置的JavaScript函数来完成我试图完成的任务,我找不到它。如果你能提供一些输入和预期输出的示例,帮助我们理解你在做什么,我想我的意思是“可读的一行”。我只是觉得有一个内置的JavaScript函数来完成我试图完成的任务,我找不到它。如果你能提供一些输入和预期输出的示例,帮助我们理解你在做什么,它会更好……非常感谢你的回复!我更新了代码以反映您的解决方案。这是一个相当愚蠢的问题,但我很高兴我学到了一些关于何时使用forEach vs map的知识。你所用的逻辑更有意义,答案就这么多!我更新了代码以反映您的解决方案。这是一个相当愚蠢的问题,但我很高兴我学到了一些关于何时使用forEach vs map的知识。你使用的逻辑更有意义