将嵌套数组中的特定键更改为javascript中的对象

问题描述

如果对象中的fields键是数组,则将数组的第一个值更改为javascript中的键值对对象。

insert into ceny_min2(id,idt,kod_k,nrdok,data_z,odczytano,ost_update,cena_min) 
select distinct on (idt) id,cena_min
from cenymin c
order by idt,id

预期产量

var obj =
[
  { id:1,fields:["item","2","list"]},{ id:2,fields:["sample","1","check"]}
]
function newObj(obj) {
        let objFields = {};
        modifiedobj.fields.forEach(field => objFields[field] = field);
        modifiedobj.fields= objFields;
        return modifiedobj; 

}
var result = this.newObject(obj)

解决方法

尝试一下:

var obj =
[
  { id:1,fields:["item","2","list"]},{ id:2,fields:["sample","1","check"]}
]
function newObject(obj) {
        let objFields = {};
        obj.forEach(e => {
          if(e.fields && e.fields.length>0)
            objFields[e.fields[0]] = e.fields[0];
        });
        return objFields; 
}
var result = this.newObject(obj);
console.log(result);

,

这是一种利用Object.assign()spread operatorArray.map()创建所需对象的功能方法。

const input = [
    { id: 1,fields: ["item","list"] },{ id: 2,fields: ["sample","check"] }
];

const process = (input) => (Object.assign(...input.map(({ fields }) => (
    fields.length ? { [fields[0]]: fields[0] } : {}
))));

console.log(process(input));

,

您的代码段很近,您只需要清理变量名,然后使用map也会使其更整洁:

const obj = [
  {id: 1,{id: 2,"check"]}
]

function newObj(inputArray) {
  let outputObject = {};
  inputArray.map(item => item.fields[0])
            .forEach(field => outputObject[field] = field);
  return outputObject;
}

var result = newObj(obj)

console.log(result)