Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将嵌套数组中的特定键更改为javascript中的对象_Javascript_Arrays_Object - Fatal编程技术网

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

将嵌套数组中的特定键更改为javascript中的对象,javascript,arrays,object,Javascript,Arrays,Object,如果对象中的字段键是数组,则在javascript中将数组的第一个值更改为键值对对象 var obj = [ { id:1, fields:["item", "2", "list"]}, { id:2, fields:["sample", "1", "check"]} ] function newObj(obj) { let objFields = {}

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

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)
预期产量

  {
   item: "item",
   sample: "sample"
  }
试试这个:

var obj=
[
{id:1,字段:[“项”,“2”,“列表”]},
{id:2,字段:[“样本”,“1”,“检查”]}
]
函数newObject(obj){
让objFields={};
对象forEach(e=>{
如果(e.fields&&e.fields.length>0)
objFields[e.fields[0]]=e.fields[0];
});
返回objFields;
}
var结果=此.newObject(obj);

控制台日志(结果)这里是一种功能性方法,它利用并创建所需的对象

const输入=[
{id:1,字段:[“项”,“2”,“列表”]},
{id:2,字段:[“样本”,“1”,“检查”]}
];
const进程=(输入)=>(Object.assign(…输入.map({fields})=>(
fields.length?{[字段[0]]:字段[0]}:{}
))));

console.log(进程(输入))您的代码片段很接近,您只需要清理变量名,然后使用
map
也会使它更整洁:

const obj=[
{id:1,字段:[“项”,“2”,“列表”]},
{id:2,字段:[“样本”,“1”,“检查”]}
]
函数newObj(输入阵列){
让outputObject={};
inputArray.map(item=>item.fields[0])
.forEach(field=>outputObject[field]=field);
返回outputObject;
}
var结果=新obj(obj)

console.log(result)
不清楚您在问什么,请详细解释。@GhassenLouhaichi感谢您的回复,希望筛选出
字段
键,创建一个对象,第一个数组值作为键和值仍然不清楚值应该是什么,例如,对于
键,值应该是字符串
“item”
还是名为
item
的变量?在第二种情况下,这个变量包含什么?@GhassenLouhaichi抱歉,它应该是字符串,应该更新output@codecat请将答案标记为解决方案,以便将来的访问者从中受益。感谢您的帮助,如何获得输出,如{fields:“item”,fields:“sample”}如果fields值为arrayYou不能有类似
{fields:“item”,fields:“sample”}
在JS中,因为这些字段名是重复的。请给我一个具体的例子,说明您想要为特定输入输出什么,我会将代码更改为匹配。如果可能,这里是小提琴,请帮助,小提琴注释中提到的场景如上所述,您的“预期输出”不可能作为对象字段名(键)必须是唯一的。在那把小提琴的评论中,“信息”重复了两次,“城市”也重复了两次。谢谢你的回复,升级了我的小提琴