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