上面我有我的数组的图片,下面的代码我映射了两组数组。这个函数的目的是使'_polygons'空数组。我有一个名为“this.siAsset.updateComponent(_id, _polygons)”的休息服务,旨在更新每个 Assets 。唯一的事情是,我似乎无法将一组数据传递给我拥有的更新组件服务,它的设计是采用一个 id 和一个对象作为参数(如果有办法解决,请提供),正如您可以看到的图片中,_id 和 _polygons 都有 id 数组和对象数组。问题是,我如何循环和匹配来调用其余部分来遍历每个 id 和对象,而不是通过像这样编写代码 9 次来调用 this.siAsset.updateComponent(_id[0], _polygons[0]) ...this .siAsset.updateComponent(_id[9], _polygons[9])
deleteAllZones = () => {
let assetVal = this.asset.$$state.value
console.log('tenant', assetVal)
let _polygons = assetVal.map(function (a) {
a.polygon = []
return a
})
console.log('a',_polygons)
let _id = assetVal.map(function (a) {
let id = a.id
return id
})
console.log('id',_id)
let message = this.$filter('translate')('SI-MESSAGES.DELZONE-MSG');
let title = this.$filter('translate')('SUBHEADER.DELZONE-TITLE');
let button = this.$filter('translate')('BUTTON.DELETE');
this.siAlertDialog.confirm(message, title, button)
.then(() => {
this.siAsset.updateComponent(_id, _polygons).then(() => {
this.toastIt.simple(this.$filter('translate')('SI-MESSAGES.ZONE-DELETED'))
}, (err) => {
this.siAlertDialog.error();
}
)
})
}
最佳答案
您的代码片段不起作用。我已经做了虚拟条目。这应该会给你一个想法。基本上,您需要循环一个数组并使用索引在第二个数组中查找相应的项目
// Mocking data here
let assetVal = [{
id: 1
},
{
id: 2
},
{
id: 3
}
]
let _polygons = assetVal.map(function(a) {
a.polygon = []
return a
})
//console.log('a', _polygons)
let _id = assetVal.map(function(a) {
let id = a.id
return id
})
//console.log('id', _id)
// Mocking done
let updateComponent = (id, polygon) => {
return new Promise((resolve, reject) => {
resolve({
id,
polygon
})
})
}
_id.forEach((id, i) => {
updateComponent(id, _polygons[i]).then(result => {
console.log(result)
})
})
此外,通过查看您的代码,您的 updateComponent
方法似乎不需要将 id
作为参数传递,因为它已经存在于 多边形
也是如此。也许您想重构它。
关于JavaScript 将一个数组与另一个数组匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44665811/