根据键的值在包含多个对象的数组中搜索

时间:2019-09-16 13:36:03

标签: javascript arrays json search

我正在尝试搜索总数。基于键在数组中出现值的时间。 我已经尝试过使用循环,它给出了正确的答案。 还有其他合适的方法吗?

如果我有连续重复的数组,则如下所示: type:'page_title'

  weddingData: Array<WeddingDataModel> = [
{
  type: 'page_title',
  data: {
    title: 'Hello First element',
  }
},
 {
  type: 'page_title',
  data: {
    title: 'Hello Second Element',
  }
},
 {
  type: 'page_title',
  data: {
    title: 'Hello Third Element',
  }
},
 {
  type: 'page_title',
  data: {
    title: 'Hello',
  }
},
{
  type: 'background_color',
  data: {
    backgroundColor: '#ff785'
  }
},
{
  type: 'banner_images',
  data: {
    image1 : {},
    image2: {},
    image3: {}
  }
}];

现在,我该如何获得拒绝。 weddingData数组中存在的关键“页面标题”的计数

4 个答案:

答案 0 :(得分:1)

使用减少:

var result = weddingData.reduce((amount, weddingDataItem) => {
    if (weddingDataItem.type === 'page_title') {
        return amount + 1;
    }
    return amount;
}, 0);

答案 1 :(得分:0)

也许您可以使用filter javascript 版本):

var weddingData = [
{
  type: 'page_title',
  data: {
    title: 'Hello First element',
  }
},
 {
  type: 'page_title',
  data: {
    title: 'Hello Second Element',
  }
},
 {
  type: 'page_title',
  data: {
    title: 'Hello Third Element',
  }
},
 {
  type: 'page_title',
  data: {
    title: 'Hello',
  }
},
{
  type: 'background_color',
  data: {
    backgroundColor: '#ff785'
  }
},
{
  type: 'banner_images',
  data: {
    image1 : {},
    image2: {},
    image3: {}
  }
}];

console.log(weddingData.filter(x => x.type === 'page_title').length)

答案 2 :(得分:0)

您可以简单地使用filter方法。

weddingData.filter(p=>{return p.type === 'page_title'}).length;

答案 3 :(得分:-1)

您可以轻松地进入数组的forEach循环,检查每个类型索引,如下所示:

weddingData.forEach( (element,key ) => { 
if (element.type == "page_title" )
    console.log(true)
    // count and do stuff here
else 
    console.log(false)
})

希望这会有所帮助!