最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Jquery how to query Json Object with multiple where clause - Stack Overflow

programmeradmin3浏览0评论

How do I query multiple columns/properties from a json object? I am trying this to query single column "category". How can Query with both Category and Id?

var data = {
  "items": [{
    "id": 1,
    "category": ["cat1","cat2"]
  }, {
    "id": 2,
    "category": ["cat1","cat3"]
  }, {
    "id": 3,
    "category": ["cat11","cat2"]
  }]
};

var returnedData = $.grep(data.items, function (element) {    
  return element.category.indexOf('cat1') >= 0;
});

console.log(returnedData);

How do I query multiple columns/properties from a json object? I am trying this to query single column "category". How can Query with both Category and Id?

var data = {
  "items": [{
    "id": 1,
    "category": ["cat1","cat2"]
  }, {
    "id": 2,
    "category": ["cat1","cat3"]
  }, {
    "id": 3,
    "category": ["cat11","cat2"]
  }]
};

var returnedData = $.grep(data.items, function (element) {    
  return element.category.indexOf('cat1') >= 0;
});

console.log(returnedData);
Share Improve this question asked Jul 5, 2018 at 21:25 KurkulaKurkula 6,78228 gold badges138 silver badges215 bronze badges 2
  • So are you saying that you want to return any objects that have the 'category' of cat1? Sorry it's just that I'm a little confused what you want to return – connoraworden Commented Jul 5, 2018 at 21:30
  • I am trying to return with a and condition something similar to where cat = 'cat 11' and id= 1 – Kurkula Commented Jul 5, 2018 at 21:36
Add a ment  | 

3 Answers 3

Reset to default 3

Instead of using the slower grep, use plain js filter

var data = {
  "items": [{
    "id": 1,
    "category": ["cat1","cat2"]
  }, {
    "id": 2,
    "category": ["cat1","cat3"]
  }, {
    "id": 3,
    "category": ["cat11","cat2"]
  }]
};

const res = data.items.filter(e => e.category.indexOf('cat1') >= 0 && e.id === 1);
console.log(res);

Not sure exactly what you are asking but -

return element.category.indexOf('cat1') >= 0 && element.id == 2;
  **return element.category.includes('cat1') && element.id!=1;**

This way you can achieve this

var data = {
  "items": [{
    "id": 1,
    "category": ["cat1","cat2"]
  }, {
    "id": 2,
    "category": ["cat1","cat3"]
  }, {
    "id": 3,
    "category": ["cat11","cat2"]
  }]
};

var returnedData = $.grep(data.items, function (element) {    
  return element.category.includes('cat1') && element.id!=1;
});

console.log(returnedData);

Live Demo

发布评论

评论列表(0)

  1. 暂无评论