【问题标题】:How to get objects by searching the array content如何通过搜索数组内容来获取对象
【发布时间】:2022-01-24 12:39:32
【问题描述】:

我有这个对象

let obj = [
   {name: 'title 1', values:['test 1', 'test 2']},
   {name: 'title 2' values: ['test 3', 'test 4']}
]

我想搜索 values = 'test 3',它会返回包含该技能的对象 输出:{name: 'title 2' values: ['test 3', 'test 4']}

我尝试过像obj.find(c=> c.skills)、迭代等搜索,但它只在对象数组内不起作用。

【问题讨论】:

  • 你想要一个对象数组还是单个对象?
  • 你的问题回答了吗?

标签: javascript arrays object


【解决方案1】:

我会使用 filer 在values 上应用条件:

 let obj = [
   {name: 'title 1', values:['test 1', 'test 2']},
   {name: 'title 2', values: ['test 3', 'test 4']}
];

const result = obj.filter(o => o.values.includes('test 3'));

console.log(result);

【讨论】:

    【解决方案2】:

    您可以通过使用Array#includes 查看数组来找到该对象。

    const
        objects = [{ name: 'title 1', values: ['test 1', 'test 2'] }, { name: 'title 2', values: ['test 3', 'test 4'] }],
        value = 'test 3',
        result = objects.find(({ values }) => values.includes(value));
    
    console.log(result);

    【讨论】:

    • 这只会返回第一个匹配项。
    【解决方案3】:

    使用filter:

    let obj = [{
      name: 'title 1',
      values: ['test 1', 'test 2']
    }, {
      name: 'title 2',
      values: ['test 3', 'test 4']
    }];
    
    let skill = 'test 3';
    let result = obj.filter(c => c.values.includes(skill));
    
    console.log(result);

    【讨论】:

      【解决方案4】:

      filter()indexOf() 应该这样做。

      let obj = [
         {name: 'title 1', values:['test 1', 'test 2']},
         {name: 'title 2', values: ['test 3', 'test 4']}
      ];
          
          let ans = obj.filter(x => x.values.indexOf('test 3') > -1);
          console.log(ans);

      【讨论】:

        【解决方案5】:

        filterincludes 已经完成。 findincludes 已经完成。然后我今天展示forEach 版本;-)

        obj = [{
          name: 'title 1',
          values: ['test 1', 'test 2']
        }, {
          name: 'title 2',
          values: ['test 3', 'test 4']
        }];
        
        n = []
        obj.forEach(c => {
          if (c.values.includes('test 3')) {
            n.push(c)
          }
        })
        
        console.log('new', n)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-09-23
          • 1970-01-01
          • 1970-01-01
          • 2017-12-31
          • 2013-10-07
          • 2018-01-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多