javascript - 如何在javascript中按类型修改现有数组对象
问题描述
我想知道如何在javascript中按类型修改数组对象,我有一个对象,如果只有数组更改为如下所示的字段类型(忽略始终是最后一个元素的图像)在javascript中
function modifyObject(ob){
var result = ob.map(e=>{
Array.isArray(e.fields) ? e.fields.map(i=>({i:i}) :
Object.assign({}, ...ob.map(elm=>(elm.fields)));
}
)
}
var r1 = this.modifyObject(obj1);
var r2 = this.modifyObject(obj2);
var obj1=[
{
fields: {"cn":"IN"},
id: 0,
group: "Active"
}
]
var obj2 =[
{
fields: ["city","name","img.jpg"],
id: 0,
group: "Active"
}
]
预期输出:
//if fields type is array
{
fields: {city:"city", name:"name"}
}
//if fields type is object
{
fields: {"cn":"IN"}
}
解决方案
问题是您的 obj1 和 obj2 不是对象,它们是数组,每个都包含一个对象。modifiedObj 必须接收 myObj[0],或者您可以像我一样修改它:
function modifyObject(myObj) {
let modifiedObj = myObj;
if (Array.isArray(modifiedObj.fields)) {
let objFields = {};
modifiedObj.fields.forEach(field => objFields[field] = field);
modifiedObj.fields = objFields;
}
return modifiedObj;
}
var obj1 = {
fields: {"cn":"IN"},
id : 0,
group : "Active"
};
var obj2 = {
fields: ["city","name","img.jpg"],
id : 0,
group : "Active"
};
var r2 = modifyObject(obj2);
console.log(r2);
如果不清楚,请告诉我。如果有帮助,请给我一个 +rep。
推荐阅读
- textures - Phaser 3 - 将 32px 纹理用于 tilemap 的 64px 切片
- bit-manipulation - Solidity 将 HEX 数字转换为 HEX 字符串
- flutter - 从华为应用内购买获取产品列表
- aria2 - 为什么 aria2c 下载完成后不退出?
- mysql - MySQL:有没有办法捕获正在运行的 SQL 查询以在活动/历史日志中使用?
- python - 打印不带括号的字典
- c# - 分配最后一个属性时引发事件
- c# - C#动态对象,根据字符串路径修改属性
- node.js - APP Engine 监听端口 3000 给出 502 Bad Gateway 错误
- mongodb - Mongodb,在同一查询中使用 $match 与 $text 和 $geoNear