如何通过嵌套对象元素的JSON数组进行查找

时间:2018-03-14 06:01:15

标签: javascript json

下面是我的JSON数组,我想查找contact数组是否具有特定值。

 data =  [ { _id: 5a67294923aba20014e2fe5a,
            customerLocation: '473 Victoria St, Singapore 198371',
            customerName: 'UNIVERSAL',
            id: 'UNI3L2',
            customerType: 'customer',
            contact:
             [ 'Brian spilak',
               'Brian spilak2',
               'Brian spilak3',
               'Brian spilak4',
               'Brian spilak5' ] } ];

JAVASCRIPT

function findContact(data,con){
           return data.contact.find(item => {
            return item.data.contact == con;
        })
     }    

    console.log('Contact Name :', findContact(data,'Brian spilak2'));

5 个答案:

答案 0 :(得分:2)

item没有data.contact属性而您的data响应它是一个数组,因此您必须指定一个索引可以使用:

function findContact(data,con){
           return data[0].contact.find(item => {
            return item == con;
        })
     }    

答案 1 :(得分:0)

您可以将data.contact用于显示的联系人数据

答案 2 :(得分:0)

使用indexOf。由于只有一个对象data[0]用于获取第一个对象,如果它是一个对象数组,则可以使用forEach方法



var data = [{
  _id: '5a67294923aba20014e2fe5a',
  customerLocation: '473 Victoria St, Singapore 198371',
  customerName: 'UNIVERSAL',
  id: 'UNI3L2',
  customerType: 'customer',
  contact: ['Brian spilak',
    'Brian spilak2',
    'Brian spilak3',
    'Brian spilak4',
    'Brian spilak5'
  ]
}];

function findContact(data, con) {
  if (data[0].contact.indexOf(con) !== -1) {
    return 'found';
  } else {
    return 'not found';
  }

}

console.log('Contact Name :', findContact(data, 'Brian spilak2'));




答案 3 :(得分:0)

您可以将array#findarray#includes一起使用,以检查对象的contact属性中是否存在名称。

var data = [ { _id: '5a67294923aba20014e2fe5a', customerLocation: '473 Victoria St, Singapore 198371', customerName: 'UNIVERSAL', id: 'UNI3L2', customerType: 'customer', contact: [ 'Brian spilak', 'Brian spilak2', 'Brian spilak3', 'Brian spilak4', 'Brian spilak5'] } ];
var result = data.find(o => o.contact.includes('Brian spilak2'));
console.log(result);

答案 4 :(得分:0)

这个返回与数组中的名称条件匹配的所有对象。

function filterName(data, srchName) {
   return data.filter((obj) => {
        return obj.contact.indexOf(srchName) !== -1
    })
}

console.log(filterName(data, 'Brian spilak'));