首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多种搜索准则的Jquery grep或map对象数组

具有多种搜索准则的Jquery grep或map对象数组
EN

Stack Overflow用户
提问于 2017-10-05 06:01:21
回答 2查看 1.1K关注 0票数 1

我有一个JSON的价目表:

代码语言:javascript
复制
  {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?我必须一个一个地搜索,然后将结果合并到另一个对象中吗?还是有更快的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-05 06:24:19

您可以使用array#filterarray#find。它将导致基于products字符串的product ids过滤。

代码语言:javascript
复制
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);

票数 1
EN

Stack Overflow用户

发布于 2017-10-05 06:10:49

使用Array.prototype.filter()Array.prototype.includes()相结合

代码语言:javascript
复制
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);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46578837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档