-2
var products = [{
  "sku": "SKU001",
  "size": "XS",
  "color": "Red"
}, {
  "sku": "SKU002",
  "size": "S",
  "color": "Blue"
}, {
  "sku": "SKU003",
  "size": "XS",
  "color": "Black"
}, {
  "sku": "SKU004",
  "size": "M",
  "color": "Red"
}, {
  "sku": "SKU005",
  "size": "M",
  "color": "White"
}]

How can I get the products of size "XS" and "S" and color "White" ?

Rajesh
  • 24,354
  • 5
  • 48
  • 79
  • And what have you tried so far? – Rajesh Nov 15 '16 at 10:43
  • 3
    `products.filter(p => (p.size === 'XS' || p.size === 'S') && p.color === 'White');` – Tushar Nov 15 '16 at 10:43
  • use `underscore.js` – chirag satapara Nov 15 '16 at 10:44
  • No need to use any library when your can directly do it through javascript: `products.filter(function(item,index){if (item.size == "XS" || item.size == "S" && item.color =="White"){return item}})` – Dhaval Soni Nov 15 '16 at 10:44
  • Guys, let OP share his effort and then suggest answers – Rajesh Nov 15 '16 at 10:48
  • Possible duplicate of [Javascript: How to filter object array based on attributes?](http://stackoverflow.com/questions/2722159/javascript-how-to-filter-object-array-based-on-attributes) – Liam Nov 15 '16 at 11:10
  • Guys I have already tried with lodash using _.filter but I am not able to add multiple condition for same key.I tried this _.filter(products,{size : ["XS","S"]}) but I wouldn't work. – Hassan Ahamed Nov 15 '16 at 11:21

1 Answers1

0

Basically, you could use a callback which test the object for the needed values and return true if match.

function (p) {
    return (p.size === 'XS' || p.size === 'S') && p.color === 'White';
}

var products = [{ "sku": "SKU001", "size": "XS", "color": "Red" }, { "sku": "SKU002", "size": "S", "color": "Blue" }, { "sku": "SKU003", "size": "XS", "color": "Black" }, { "sku": "SKU004", "size": "M", "color": "Red" }, { "sku": "SKU005", "size": "M", "color": "White" }, { "sku": "test1", "size": "S", "color": "White" }, { "sku": "test2", "size": "XS", "color": "White" }],
    result = _.filter(products, function (p) {
        return (p.size === 'XS' || p.size === 'S') && p.color === 'White';
    });

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

Plain Javascript

var products = [{ "sku": "SKU001", "size": "XS", "color": "Red" }, { "sku": "SKU002", "size": "S", "color": "Blue" }, { "sku": "SKU003", "size": "XS", "color": "Black" }, { "sku": "SKU004", "size": "M", "color": "Red" }, { "sku": "SKU005", "size": "M", "color": "White" }, { "sku": "test1", "size": "S", "color": "White" }, { "sku": "test2", "size": "XS", "color": "White" }],
    result = products.filter(function (p) {
        return (p.size === 'XS' || p.size === 'S') && p.color === 'White';
    });

console.log(result);
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392