0

我有一个这样的页面json:

{
    "results": [
        {
            "ID": 8695,

            "Active": 1,
            "condition": "new",
            "url_image": "https://tdiscount.tn/img/p/2/1/5/4/4/21544.jpg"
        },
        {
            "ID": 8695,

            "Long_description": "",
            "Active": 1,
            "condition": "new",
            "url_image": "https://tdiscount.tn/img/p/2/1/5/4/2/21542.jpg"
        },
        {
            "ID": 8696,

            "Active": 1,
            "condition": "new",
            "url_image": "https://tdiscount.tn/img/p/2/1/5/4/6/21546.jpg"
        },
        {
            "ID": 8696
            "Active": 1,
            "condition": "new",
            "url_image": "https://tdiscount.tn/img/p/2/1/5/4/5/21545.jpg"
        }
    ]
}

ID 始终相同,但 url_image 会发生变化。

我需要在具有相同 ID 的数组中填充 url_image 的列表

到目前为止,这是我必须要做的:

 getProductByCategory: (id_category,callback) => {
        db.query(
         'SELECT p.id_product AS ID,m.name Manufacturer,pl.name AS Product_name,p.id_category_default AS Default_Category, (CASE    WHEN p.id_tax_rules_group= 13 THEN ROUND(p.price * 1.19 , 3) WHEN p.id_tax_rules_group= 15  THEN ROUND(p.price * 1.07 , 3)  END)AS Price_tax_incl , p.on_sale AS On_sale, p.reference as Reference, s.quantity as Quantity, (CASE  WHEN s.quantity> 0 THEN pl.available_now  ELSE "Ce produit n`est plus disponible" END) as available, pl.description_short AS Short_description, pl.description as Long_description , p.active as Active,p.condition ,concat( "https://tdiscount.tn/img/p/",mid(im.id_image,1,1),"/", if(length(im.id_image)>1,concat(mid(im.id_image,2,1),"/"),""),if (length(im.id_image)>2,concat(mid(im.id_image,3,1),"/"),""),if(length(im.id_image)>3,concat(mid(im.id_image,4,1),"/"),""),if(length(im.id_image)>4,concat(mid(im.id_image,5,1),"/"),""), im.id_image, ".jpg" ) AS url_image FROM ps_product p INNER JOIN ps_product_lang pl ON p.id_product = pl.id_product LEFT JOIN ps_manufacturer m ON (p.id_manufacturer = m.id_manufacturer) LEFT JOIN ps_image im ON p.id_product = im.id_product LEFT JOIN ps_product_attribute pa ON (p.id_product = pa.id_product) LEFT JOIN ps_stock_available s ON (p.id_product = s.id_product) WHERE pl.id_lang=1 and p.active = 1 and p.id_category_default = ?' ,
            [id_category],
            (error,results,fields)=>{
                if(error){
                    return callback(error);
                }
                return callback(null,results);
            },
        );
    },

我需要一种通过 Id 获取多个元素的方法

4

1 回答 1

1

您可以.filter()在结果数组上使用,然后.map()仅选择图像 url:

const pages = require('./pages.json')

function getElements(id) {
  return pages.results
    .filter(page => page.ID === id)
    .map(page => page.url_image)
}

getElements(8696)
于 2020-04-02T21:51:21.143 回答