如何在javascript中将数组作为对象传递?
我可以通过这种方式传递数组的值,并且它可以正常工作如何在javascript中将数组作为对象传递?,javascript,arrays,object,Javascript,Arrays,Object,我可以通过这种方式传递数组的值,并且它可以正常工作 const obj = [ { text1: "John", text2: "male" }, { text1: "Philip", text2: "male" }, { text1: "Matthew", text2: "male" }, { text1: "Richard", text2
const obj = [
{ text1: "John", text2: "male" },
{ text1: "Philip", text2: "male" },
{ text1: "Matthew", text2: "male" },
{ text1: "Richard", text2: "male" },
];
但我必须这样通过
var obj = {
text1: ["John", "Philip", "Matthew", "Richard"],
text2: ["male", "male", "male", "male"]
};
使用
Array.prototype.reduce
,这可以简单地完成
const obj=[
{text1:“约翰”,text2:“男性”},
{text1:“菲利普”,text2:“男性”},
{text1:“马修”,text2:“男性”},
{text1:“理查德”,text2:“男性”},
];
常量输出=对象减少((acc,cur)=>{
Object.keys(cur.forEach)((项)=>{
acc[项目]?acc[项目]。推送(当前[项目]):acc[项目]=当前[项目];
});
返回acc;
}, {});
控制台日志(输出)代码>
const obj=[{
正文1:“约翰”,
正文2:“男性”
},
{
正文1:“菲利普”,
正文2:“男性”
},
{
正文1:“马修”,
正文2:“男性”
},
{
正文1:“理查德”,
正文2:“男性”
},
];
变量输出={}
对象forEach(项目=>{
Object.keys(项).forEach(项=>{
如果(!output[key])output[key]=[];
输出[键]。推送(项[键])
})
})
控制台日志(输出)代码>您可能希望按键对值进行分组
通过输入的每一项使用循环
在每个项目中,尝试收集属于此项目的所有密钥的名称
在每个键的名称上使用for…循环
,检查obj[k]
是否为空,然后我们必须将一个空数组和该键(k
)的值分配到obj[k]
这就是解决办法
const输入=[
{text1:'约翰',text2:'男性'},
{text1:'菲利普',text2:'男性'},
{text1:'马修',text2:'男'},
{text1:'理查德',text2:'男性'},
];
函数数组(数组){
常量obj={};
array.forEach(项=>{
常量键=对象键(项);
用于(密钥常数k){
(obj[k]=obj[k]| |[])。推送(项目[k]);
}
});
返回obj;
}
常量输出=数组(输入);
控制台日志(输出);
我们可以使用数组来实现这一点。减少和对象。条目
const obj=[{text1:“约翰”,text2:“男性”},{text1:“菲利普”,text2:“男性”},{text1:“马修”,text2:“男性”},{text1:“理查德”,text2:“男性”},]
const formatData=(data)=>data.reduce((res,obj)=>{
Object.entries(obj.forEach)([key,val])=>{
res[key]=[…(res[key]| |[]),val];
});
返回res;
}, {});
console.log(formatData(obj))代码>
。作为控制台包装器{
最大高度:100%!重要;
}
初始数组中的所有对象是否只有text1
和text2
,或者是否有其他属性?只有text 1和text2可以像数组一样传递,而无需重复键入text1和text2text2@BarryAllen除了每个属性名之外,您不需要重复任何内容两次(一次用于源,一次用于目标)-我遗漏了什么吗?不@Dai,我明白你的意思。像这样的text1:[“John”、“Philip”、“Matthew”、“Richard”]、text2:[“male”、“male”、“male”、“male”、“male”]
。两个属性和四项/多项数组。@BarryAllen您所说的“组件”是什么意思?我发布的代码假设input
是您的obj
数组,它将正确处理任何大小的数组。好的@dai。谢谢。
const input = [
{ text1: "John", text2: "male" },
{ text1: "Philip", text2: "male" },
{ text1: "Matthew", text2: "male" },
{ text1: "Richard", text2: "male" },
];
const output = {
text1: input.map( e => e.text1 ),
text2: input.map( e => e.text2 )
};