Javascript 访问内部对象并形成Jsx
我有两套东西Javascript 访问内部对象并形成Jsx,javascript,reactjs,Javascript,Reactjs,我有两套东西 const obj1 = { men: { value: "men", attribute_label: "Men", type: "select", attribute_options: { 1: { label: "infant", value_string: "1" }, 2: { labe
const obj1 = {
men: {
value: "men",
attribute_label: "Men",
type: "select",
attribute_options: {
1: { label: "infant", value_string: "1" },
2: { label: "baby", value_string: "2" }
}
},
women: {
value: "women",
attribute_label: "Women",
type: "select",
attribute_options: {
1: { label: "infant", value_string: "1" },
2: { label: "baby", value_string: "2" }
}
},
kids: {
value: "kids",
attribute_label: "Kids",
type: "select",
attribute_options: {
7: { label: "infant", value_string: "1" },
8: { label: "baby", value_string: "2" }
}
}
};
和set2
const obj2 = {
men: { code: "men", title: "Men" },
women: { code: "men", title: "Men" }
};
我想比较两组对象,如果关键点相同,我想得到新对象的结果
const resultobj = {
men: {
value: "men",
attribute_label: "Men",
type: "select",
attribute_options: {
1: { label: "infant", value_string: "1" },
2: { label: "baby", value_string: "2" }
}
},
women: {
value: "women",
attribute_label: "Women",
type: "select",
attribute_options: {
1: { label: "infant", value_string: "1" },
2: { label: "baby", value_string: "2" }
}
}
};
我想显示结果obj中的标签,并在选项中显示标签。我有标签在男子和内选项,我有其他2标签男孩和男孩。妇女也是如此。因此,我也想在选项中显示值。我提到的示例格式
Men
boy Guy
Women
Lady Girl
考虑到
选项
是一个对象数组,您可以使用下面的实用程序从set1
获取set2
的匹配项
const set1={
男子:{
价值观:“男人”,
标签:“男性”,
键入:“选择”,
选项:[
{1:{label:'boy',value_string:'1'},
{2:{label:'Guy',value_string:'2'},
],
},
妇女:{
价值观:“女性”,
标签:“女性”,
键入:“选择”,
选项:[
{1:{label:'lady',value_string:'1'},
{2:{label:'girl',value_string:'2'},
],
},
孩子们:{
价值观:“孩子们”,
标签:“儿童”,
键入:“选择”,
选项:[
{1:{label:'baby',value_string:'1'},
{2:{label:'baby',value_string:'2'},
],
},
}
常数集2={
男:{代码:'男',标题:'男'},
女性:{代码:'男性',标题:'男性'},
}
让finalObj=Object.keys(set2).reduce((结果,键)=>{
结果[键]=设置1[键]
返回结果
}, {})
console.log(finalObj)
我可以在这里帮助您比较对象,您可以首先获取对象的条目并应用过滤器,然后在其中查看键是否包含在第二个对象中。完成后,您可以使用Object.fromEntries
创建新对象。以下是工作示例:
var set1={
男人:{value:“男人”,label:“男人”,type:“选择”,“选项”:[{label:“男孩”,value_字符串:“1”},{label:“男孩”,value_字符串:“2”}]},
女性:{value:“女性”,标签:“女性”,键入:“选择”,“选项”:[{label:“lady”,value_字符串:“1”},{label:“girl”,value_字符串:“2”}]},
孩子:{value:“孩子”,label:“孩子”,type:“选择”,“选项”:[{label:“婴儿”,value_字符串:“1”},{label:“婴儿”,value_字符串:“2”}]},
};
变量集2={
男子:{代号:“男子”,标题:“男子”},
妇女:{代码:“男子”,标题:“男子”},
};
var filteredObj=Object.fromEntries(Object.entries(set1.filter)([k,v])=>Object.keys(set2.includes(k));
控制台日志(filteredObj)代码>
const set1={
男人:{value:'men',标签:'men',键入:'select',
选项:[
{1:{label:'boy',value_string:'1'},
{2:{label:'Guy',value_string:'2'},
],
},
女性:{value:'women',标签:'women',键入:'select',
选项:[
{1:{label:'lady',value_string:'1'},
{2:{label:'girl',value_string:'2'},
],
},
孩子:{value:'kids',标签:'kids',键入:'select',
选项:[
{1:{label:'baby',value_string:'1'},
{2:{label:'baby',value_string:'2'},
],
},
};
常数集2={
男子:{代号:“男子”,标题:“男子”},
妇女:{代码:“妇女”,标题:“妇女”},
};
让keys=Object.keys(set1.filter)(key=>set2中的key)
让结果={}
key.forEach((key)=>{
结果={……结果,{[key]:set1[key]}
})
console.log(result)
我不知道我是否理解,您想创建一个新对象,其中键在前两个对象中是公共的?你应该选择哪一个物体,set1还是set2?还是一个组合?是的。我还想显示标签和选项中的值。您的输入仍然无效(“选项”:1:{label:“boy”
)。发布可编译代码是绝对最低要求。任何代码编辑器都会突出显示对象文字中的错误。@Rspp(“选项”:1:{label:“boy”})
在js中不是有效的对象语法你的意思是选项是数组吗?在数组中是的。在创建对象格式时,我错过了它,但我想在选项中获得标签,并从最后一个对象显示出来。在选项男孩的标签下方,我添加了沙盒链接,用于以您想要的方式显示标签。请当我在浏览器控制台中检查时,选项是这样的:{1:{…},2:{…}
。当我展开它时,它会显示'options:1:{label:“boy”,value_string:“1”}2:{label:“Guy”,value_string:“2”}。当我展开它时,我得到它:选项:1:{label:“boy”,value_string:“1”}2:{label:“Guy”,value_string:“2”}
。那么在这种情况下,上面的代码会起作用吗?@Nithish Sandbox with data在您提到的问题options
中是一个对象数组
。但是在您共享的链接中,您使用了属性\u options
作为对象。您能告诉我们您输入的结构吗?只有这样,我们才能帮助您。我也想显示标签内选项。期望像这个男人男孩Guy@Rspp您可以编辑您的问题并以JSON形式向我们显示预期的输出。@Rspp如果我理解正确,您需要在选项中显示value
{label:'boy',value_string:'1',value:'men'},对吗?不。不是这样。在jsx中,如果我返回{resultobj.label}给出了label(Men)。但也要返回选项label。根据您的回答,将得到最终输出filteredObj。这是正确的。现在我要显示选项内的值。在选项内我有label。该值在label@Rspp我在浏览器控制台中添加了我的答案,选项如下选项:{1:{…},2:{…}
。当我展开它时,会显示选项:1:{label:“boy”,value_字符串:“1”}2:{label:“Guy”,value_字符串:“2”}
。当我展开它时,我得到它:选项:1:{label:“boy”,value_字符串:“1”}2:{label:“Guy”,value_字符串:“2”}
。因此,对于这种情况,上述代码将起作用?@aravind\u reddyI收到此错误**attribute\u options.m