【问题标题】:change object property value by other object property value Typescript [duplicate]通过其他对象属性值Typescript更改对象属性值[重复]
【发布时间】:2021-11-23 05:22:48
【问题描述】:

您好,我想用另一个对象的另一个属性值更改一个对象的属性值

我有两个数组:

let arr1 = [{id:1, name:'test user', imageURL:''}, {id:1, name:'test user', imageURL:''}, {id:1, name:'test user 3', imageURL:''}];
let arr2 = [{id:1, name:'test user', imageURL:'abcdefghijklmnop'}];

如何在 Typescript 中通过 id 在 arr1 imageURL 中设置来自 arr2 的值 imageURL?

伪代码: 如果 arr2 中的 id 与 arr1 中的 id 匹配,则设置 arr1.imageURL = arr2.imageURL

信息:我不能替换整个对象。

【问题讨论】:

  • 将 arr1 和 arr2 转换为对象 id -> url。为 arr2 的每个键赋值 arr1[key] ?? arr2[键]。给我买杯啤酒,我们就完成了。
  • 我不允许替换整个对象。仅更改 imageURL 值
  • o1 = toObject arr1; o2 = toObject arr2;对于 o2 { o2[key].url = o1[key]?.url ?? o2[key].url } + 给我买杯啤酒(周五阳光明媚)

标签: javascript arrays angular typescript


【解决方案1】:

假设 arr2 只有一个值,

this.arr1.forEach((item) => {
  if(item.id == this.arr2[0].id) {
    item[imageUrl] = this.arr2[0].imageUrl
  }
})

如果 arr2 有多个值,你也可以使用 forEach 一样

【讨论】:

    【解决方案2】:

    let arr1 = [{id:1, name:'test user', imageURL:''}, {id:1, name:'test user', imageURL:''}, {id:1, name:'test user 3', imageURL:''}];
    let arr2 = [{id:1, name:'test user', imageURL:'abcdefghijklmnop'}];
    
    function setUrl(arr1, arr2, id) {
       let obj = arr2.find(prop => prop.id == id)
       if(!obj) return null;
       let response = arr1.map(prop => {
          if(prop.id === id) {
             prop.imageURL = obj.imageURL
          }
          return prop
       })
       return response
    }
    
    let result = setUrl(arr1, arr2, 1)
    
    console.log(result)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 2022-01-17
      • 2019-06-18
      • 2016-11-02
      • 1970-01-01
      • 2019-03-09
      • 2015-10-17
      相关资源
      最近更新 更多