上面我有我的数组的图片,下面代码我已经映射了2组数组。这个函数的目的是使' _polygons '为空数组。我有一个休息服务,它是' this.siAsset.updateComponent(_id,_polygons)',旨在更新每个资产。唯一的事情是,我似乎无法将数据数组传递给我拥有的更新组件服务,它的设计是将一个id和一个对象作为参数(如果有方法,请提供),如您所见图片,_id和_polygons都有id的数组,这是一个对象数组。问题是,我如何循环和匹配调用其余的来遍历每个id和对象,而不是通过编写代码来调用9次,如this.siAsset.updateComponent(_id [0],_polygons [0])...这个.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();
}
)
})
}
答案 0 :(得分:1)
您的代码段不起作用。我做了虚拟参赛作品。这应该给你一个想法。基本上,您需要循环遍历一个数组并使用索引在第二个
中查找相应的项目
// 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
作为参数传递,因为它已经存在于polygon
中。也许你想要重构它。