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

标签 javascript html angularjs arrays loops

enter image description here

上面我有我的数组的图片,下面的代码我映射了两组数组。这个函数的目的是使'_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/

相关文章:

javascript - 用css或canvas绘制曲线

javascript - 使用 javascript 模拟链接的外观

javascript - 使用 JQuery UI 拖放以填充空白

css - 如何使用颜色选择器angular js更改div背景

javascript - 如何从 href 调用 javascript 函数?

javascript - Observable.flatMap最新: Cancel at a deeper level?

php - 如果这本书有多个作者,我怎样才能阻止 php 显示两次

javascript - input 的 event.target 在 this.setState [React.js] 中为 null

javascript - 在angularjs中使用ng-if出错

angularjs - MarkLogic 8 NodeJS Angular JSON 事务