Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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 - Fatal编程技术网

Javascript 如何从对象数组中获取唯一值

Javascript 如何从对象数组中获取唯一值,javascript,Javascript,我已经映射了一个数组对象,现在我需要从该数组的子对象中获取唯一的值 const arr=[ { name: 'name1', functions:{ 0:{ name:'some1', property: 'string' }, 1:{

我已经映射了一个数组对象,现在我需要从该数组的子对象中获取唯一的值

const arr=[
            {
              name: 'name1',
              functions:{
                0:{
                  name:'some1',
                  property: 'string'
                },
                1:{
                  name:'some1',
                  property: 'string'
                },
                2:{
                  name:'some3',
                  property: 'number'
                }
              }
            },
          ]


<div>
          {
              arr.map((item, index) => {
                  let ars=[]
                  //console.log(item.functions)
                  for(const key in item.functions){                
                    if(ars.indexOf(item.functions[key])>1){
                        ars.push(item.functions[key])
                    }
                  }
                  console.log(ars)
              return <div key={index}>
                <h2>{item.name}</h2>
                {
                    ars.map((i)=>(
                        <p>{i.name}</p>
                    ))
                }

              </div>
          })
          }
          </div>
我需要得到这样的值: 某物 大约3

所以我只需要从属性字符串中获取一个名称。对于数字,只有一个名称。

您可以创建一个for属性。如果尚未添加属性,请将该属性的名称添加到数组中

常数arr=[{ 名称:'name1', 职能:{ 0: { 名称:“some1”, 属性:“字符串” }, 1: { 名字:“some2”, 属性:“字符串” }, 2: { 名字:“some3”, 属性:“编号” } } }] const propertySet=新集合, 名称=[] 对于arr的常数{函数}{ Object.valuesfunctions.forEacho=>{ if!propertySet.haso.property{ name.pusho.name; propertySet.addo.property } } }
console.lognames如果基于属性值的字符串表示的唯一性足够了,并且name的值始终为truthy,则可以使用以下代码:

const arr=[{name:'name1',函数:{0:{name:'some1',属性:'string'},1:{name:'some2',属性:'string'},2:{name:'some3',属性:'number'}]; 让lookup={}; arr.forEachobj=>{ Object.valuesobj.functions.forEachfunc=>{ 查找[func.property]| |查找[func.property]=func.name; }; };
console.logObject.valueslookup;我不明白预期的输出是什么。你能在你的问题中添加你想要代码返回的内容吗?可能重复的我需要这样的输出:some1,some3@Saban这将为您提供一个唯一名称数组。您可以通过它进行映射,并根据需要创建divdoing@Saban为什么预期的输出中不包括some2?我需要按属性名称筛选数组,因此我希望得到some1而不是some2,因为属性名称字符串相同。答案不正确,他需要根据唯一属性打印名称。因为some2和some3具有相同的属性值,所以输出中应该只有一个属性值