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

标签 javascript

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

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>

我需要获取这样的值: 一些1 一些3

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

最佳答案

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

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

const propertySet = new Set,
      names = []

for (const { functions } of arr) {
  Object.values(functions).forEach(o => {
    if (!propertySet.has(o.property)) {
      names.push(o.name);
      propertySet.add(o.property)
    }
  })
}

console.log(names)

关于javascript - 如何从对象数组中获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56450135/

相关文章:

javascript - Node js mysql访问javascript对象

javascript - 如何让模态弹出窗口以慢速打开和关闭?

javascript - 表单中的文本幻灯片

javascript - 来自 &lt;input type ="file"> 以外的源的 FileReader.readAsArray()

javascript - D3.js 用力沿圆展开正方形

javascript - 如何通过JS将一种表单的文本框中的内容复制到另一种表单的文本框中

javascript - ngrx/redux 操作上下文的最佳实践

javascript - 为什么我的 X(时间)轴上没有刻度?

javascript - 在排行榜中包含滚动条

javascript - 什么会导致 Firefox 在执行外部脚本后多次请求资源?