将 javascript 中的嵌套数组对象更改为按值类型的对象

change nested array object to objects by value type in javascript

如何修改数组对象为javascript中的对象。

我有对象 obj1,将 details 键的值更改为新对象 javascript

function newObj(obj1){
  return Object.assign({}, ...obj1.map(e=>(e.details)));
}
var r1= this.newObj(obj1)

var obj1 = [
  {
    details: {
      "info":["stocks","finance",""],
      "sales":["analytics"]
    }
  }
]

var obj2 = [
  {
    details: {
      "city":{"SG"}
    }
  }
]
Expected Output
//for obj1 (show only first value of array)
{
  stocks: "stocks",
  analytics: "analytics"
}
//obj2
{
SG: "SG"
}

obj2 中的对象应该有键。

为了解决这个问题,我们需要保留一个object/map来填充函数要返回的值。因此,您需要遍历每个 detail 元素并获取每个 属性 的值。然后,我们可以检查它是 array 还是 object 并相应地填充 map

var obj1 = [
  {
    details: {
      "info":["stocks","finance",""],
      "sales":["analytics"]
    }
  }
]
var obj2 = [
  {
    details: {
      "city":{name:"SG"}
    }
  }
]

function newObj(obj1){
  let map = {};
  obj1.forEach(e=>{
    let details = e.details;
    Object.values(details).forEach(value => {
      if(Array.isArray(value) && value.length>0)
        map[value[0]]=value[0];
      else if(typeof value === 'object')
        Object.values(value).forEach(val => { map[val]=val; });
    })
  });
  return map;
}

var r1= this.newObj(obj1)
console.log(r1);
var r2 = this.newObj(obj2)
console.log(r2);