JavaScript将一个数组与另一个数组匹配?

时间:2017-06-21 02:15:35

标签: javascript html angularjs arrays loops

enter image description here

上面我有我的数组的图片,下面代码我已经映射了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();
                }
                )
            })
    }

1 个答案:

答案 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中。也许你想要重构它。