Как пройти через объект JSON с определенным ключом и значением в JavaScript? - PullRequest
0 голосов
/ 11 сентября 2018

Я перебираю объект json со структурой ниже:

var my_products = {
    "products": [
        {
            "title": "Product 1",
            "id": 001,
            "stock_quantity": 0,
            "in_stock": false
        },
        {
            "title": "Product 2",
            "id": 002,
            "stock_quantity": 0,
            "in_stock": false
        },
        {
            "title": "Product 3",
            "id": 003,
            "stock_quantity": 1,
            "in_stock": true
        },
        {
            "title": "Product 4",
            "id": 004,
            "stock_quantity": 1,
            "in_stock": true
        }
    ]
};

Я могу перебирать объект с помощью кода ниже:

for(var i=0; i<my_products.products.length; i++) {
    var product = my_products.products[i];
    console.log(product);
    console.log('in_stock:',product.in_stock);
}

Знаете ли вы, как я могуцикл по каждой записи, где продукты, которые имеют "stock_quantity": 1 and "in_stock": true свойства?

В приведенном выше примере есть 2 записи продукта, которые имеют свойство "stock_quantity": 1 (не нулевое количество)

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Просто вы можете перебирать и filter данные с условием if.

var my_products = {
    "products": [
        {
            "title": "Product 1",
            "id": 001,
            "stock_quantity": 0,
            "in_stock": false
        },
        {
            "title": "Product 2",
            "id": 002,
            "stock_quantity": 0,
            "in_stock": false
        },
        {
            "title": "Product 3",
            "id": 003,
            "stock_quantity": 1,
            "in_stock": true
        },
        {
            "title": "Product 4",
            "id": 004,
            "stock_quantity": 1,
            "in_stock": true
        }
    ]
};
var filterData = [];
$.each(my_products.products, function(){
    if (this.in_stock && this.stock_quantity === 1) {
        filterData.push(this);
    }
});
console.log(filterData);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
0 голосов
/ 11 сентября 2018

Вы можете filter массив первым:

var my_products = {
    "products": [
        {
            "title": "Product 1",
            "id": 001,
            "stock_quantity": 0,
            "in_stock": false
        },
        {
            "title": "Product 2",
            "id": 002,
            "stock_quantity": 0,
            "in_stock": false
        },
        {
            "title": "Product 3",
            "id": 003,
            "stock_quantity": 1,
            "in_stock": true
        },
        {
            "title": "Product 4",
            "id": 004,
            "stock_quantity": 1,
            "in_stock": true
        }
    ]
};
console.log(
  my_products.products.filter(({ stock_quantity, in_stock }) => (
    in_stock && stock_quantity === 1
  ))
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...