问题描述
如果对象中的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 operator和Array.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)