Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Nested Loops - Fatal编程技术网

如何在javascript中按键值类型更改嵌套对象数组

如何在javascript中按键值类型更改嵌套对象数组,javascript,arrays,object,nested-loops,Javascript,Arrays,Object,Nested Loops,我想知道如何在javascript中修改对象数组 i、 e对于obj,当值为数组时,将值键数组更改为字符串 当value为字符串时,将value键字符串更改为array 另外,如何将输出转换为输入obj,以及(反之亦然-当您使用时,您可以返回一个包含当前对象的所有属性和值的新对象(…o),以及更新值属性。更新值属性将检查o.value是否为数组(使用检查),如果是,它会将元素转换为字符串,它是字符串(即:不是数组),它会在逗号上将字符串转换为数组 见下例: 函数newObject(arr){

我想知道如何在javascript中修改对象数组

i、 e对于obj,当
为数组时,将
键数组更改为字符串

value
为字符串时,将
value
键字符串更改为array

另外,如何将输出转换为输入
obj
,以及(反之亦然-当您使用时,您可以返回一个包含当前对象的所有属性和值的新对象(
…o
),以及更新
属性。更新值属性将检查
o.value
是否为数组(使用检查),如果是,它会将元素转换为字符串,它是字符串(即:不是数组),它会在逗号上将字符串转换为数组

见下例:

函数newObject(arr){
返回arr.map(o=>({
……哦,
value:Array.isArray(o.value)?o.value.join():o.value.split(“,”)
}));
}
常量arr1=[{id:0,键:“s1”,值:[“listA”,“listB”],img:},{id:1,键:“s2”,值:[“listC”],img:},{id:2,键:“s3”,值:[“listD”,“listE”,“listF”],img:};
const arr2=[{id:0,键:“s1”,值:“listA,listB”,img:},{id:1,键:“s2”,值:“listC”,img:},{id:2,键:“s3”,值:“listD,listE,listF”,img:}];
const res1=新对象(arr1);
const res2=新对象(arr2);
控制台日志(res1);

log(res2);
我们可以使用for循环来实现更高的性能

让arr_1=[
{id:0,键:“s1”,值:[“listA”,“listB”],img:},
{id:1,键:“s2”,值:[“listC”],img:},
{id:2,键:“s3”,值:[“listD”、“listE”、“listF”],img:},
{id:0,键:“s1”,值:“listA,listB”,img:},
{id:1,键:“s2”,值:“listC”,img:},
{id:2,键:“s3”,值:“listD,listE,listF”,img:}
]
常数f=(arr)=>{
for(设i=0;if(arr_1)
输出数组的最后一个对象中的
listF
发生了什么事?(第一个代码块?@NickParsons感谢回复,更新了代码,被遗漏了
arr.forEach(item=>item.value=item.value.join(“”)
arr.forEach(item=>item.value=item.value.split(“,”)
function newObject(obj){
  var result = obj.map(e=>typeof e.value === "string" ?
  {...e, value: [e.value] } :
   e.value.map(value => ({...e,value})) 
  ).flat()
  console.log(result);
  return result;

}


input:
obj =[
 { id: 0, key: "s1", value: ["listA","listB"], img:"" },
 { id: 1, key: "s2", value: ["listC"], img: "" },
 { id: 2, key: "s3", value: ["listD","listE","listF"], img: "" }
]

Expected output:
[
  { id: 0, key: "s1", value: "listA,listB", img:""},
  { id: 1, key: "s2", value: "listC", img:""},
  { id: 2, key: "s3", value: "listD,listE,listF", img:""}
]

input
[
  { id: 0, key: "s1", value: "listA,listB", img:""},
  { id: 1, key: "s2", value: "listC", img:""},
  { id: 2, key: "s3", value: "listD,listE,listF", img:""}
]

Expected Output
[
 { id: 0, key: "s1", value: ["listA","listB"], img:"" },
 { id: 1, key: "s2", value: ["listC"], img: "" },
 { id: 2, key: "s3", value: ["listD","listE","listF"], img: "" }
]