我有一个JSON的价目表:
{Products: [{AdminID: 137, ProduktID: "07.1434", itemName: "Repaplast", itemColor: "0000, 5030", MalKode: "1-3", …}{AdminID: 6, ProduktID: "07.1436", itemName: "Repaplast grå", itemColor: "0070", MalKode: "1-3", …}{AdminID: 146, ProduktID: "90.0905", itemName: "Mixer Gun", itemColor: null, MalKode: "", …}{AdminID: 89, ProduktID: "02.0135", itemName: "Repaplast Primer NEW FORMULA", itemColor: "", MalKode: "5-3", …}]}这份名单大约有400个产品。
假设我想限制仅显示基于字段ProduktID (这是唯一的)的特定产品的列表。假设我有一份报价中的产品清单:
07.1438,01,1340,05,04531,02.0135
其中逗号是分隔符。
如何基于这些输入对对象数组进行.grep或.map?我必须一个一个地搜索,然后将结果合并到另一个对象中吗?还是有更快的方法?
发布于 2017-10-05 06:24:19
您可以使用array#filter和array#find。它将导致基于products字符串的product ids过滤。
const productIds = '07.1438, 01,1340, 05,04531, 02.0135';
const products = [{AdminID: 137, ProduktID: "07.1438", itemName: "Repaplast", itemColor: "0000, 5030", MalKode: "1-3",},{AdminID: 6, ProduktID: "07.1436", itemName: "Repaplast grå", itemColor: "0070", MalKode: "1-3",},{AdminID: 146, ProduktID: "90.0905", itemName: "Mixer Gun", itemColor: null, MalKode: "",},{AdminID: 89, ProduktID: "02.0135", itemName: "Repaplast Primer NEW FORMULA", itemColor: "", MalKode: "5-3",}];
var result = products.filter( o => productIds.split(',').find(productId => o.ProduktID === productId.trim()));
console.log(result);
发布于 2017-10-05 06:10:49
使用Array.prototype.filter()与Array.prototype.includes()相结合
const wanted = ['07.1438', '01','1340', '05', '04531', '02.0135'];
const products = [
{
AdminID : 137,
ProduktID: "07.1434",
itemName : "Repaplast",
itemColor: "0000, 5030",
MalKode : "1-3"
},
{
AdminID : 6,
ProduktID: "07.1436",
itemName : "Repaplast grå",
itemColor: "0070",
MalKode : "1-3"
},
{
AdminID : 146,
ProduktID: "90.0905",
itemName : "Mixer Gun",
itemColor: null,
MalKode : ""
},
{
AdminID : 89,
ProduktID: "02.0135",
itemName : "Repaplast Primer NEW FORMULA",
itemColor: "",
MalKode : "5-3"
}
];
const filtered = products.filter((product) => wanted.includes(product.ProduktID));
console.log("Filtered", filtered);
https://stackoverflow.com/questions/46578837
复制相似问题