数组属性上的JavaScript筛选对象

数组属性上的JavaScript筛选对象,javascript,object,filter,Javascript,Object,Filter,我将以下有效负载(小样本)作为对象从api返回 { "0hmITkwFMbB2BDIUFlFm": { "price": 89, "categories": ["wireless", "broadband"], "companyname": "T-Mobile", "symbol": "TMUS" }, "8g570i57at8yTjoZtSuk": { "companyname": "Microsoft", "symbol": "MSFT",

我将以下有效负载(小样本)作为对象从api返回

{
"0hmITkwFMbB2BDIUFlFm": {
    "price": 89,
    "categories": ["wireless", "broadband"],
    "companyname": "T-Mobile",
    "symbol": "TMUS"
},
"8g570i57at8yTjoZtSuk": {
    "companyname": "Microsoft",
    "symbol": "MSFT",
    "price": 181.25,
    "categories": ["technology", "software"]
},
"OMc8V4AVH5q5z0Sis8vp": {
    "companyname": "Amazon",
    "symbol": "AMZN",
    "price": 2419.49,
    "categories": ["E-commerce", "consumer products"]
},
我希望能够返回在categories数组中包含给定值的每个对象。例如,返回类别数组中包含“技术”的所有对象

如何在javascript中实现这一点

const obj = {
"0hmITkwFMbB2BDIUFlFm": {
    "price": 89,
    "categories": ["wireless", "broadband"],
    "companyname": "T-Mobile",
    "symbol": "TMUS"
},
"8g570i57at8yTjoZtSuk": {
    "companyname": "Microsoft",
    "symbol": "MSFT",
    "price": 181.25,
    "categories": ["technology", "software"]
},
"OMc8V4AVH5q5z0Sis8vp": {
    "companyname": "Amazon",
    "symbol": "AMZN",
    "price": 2419.49,
    "categories": ["E-commerce", "consumer products"]
}
}

const filteredObjects = Object.keys(obj).reduce((acc, rec) => {
  if (obj[rec].categories.includes('technology'))
    return [...acc, obj[rec]]
  return acc;
}, [])

console.log(JSON.stringify(filteredObjects))
下面的代码允许您获得满足给定条件的过滤对象数组

试试看

let filteredObjects = [];
Object.keys(sampleObjects).map((key) =>{
   if (sampleObjects.indexOf('technology') != -1) {
      filteredObjects.push(sampleObjects[key];
   }
});
let response = {
  "0hmITkwFMbB2BDIUFlFm": {
    "price": 89,
    "categories": ["wireless", "broadband"],
    "companyname": "T-Mobile",
    "symbol": "TMUS"
  },
  "8g570i57at8yTjoZtSuk": {
    "companyname": "Microsoft",
    "symbol": "MSFT",
    "price": 181.25,
    "categories": ["technology", "software"]
  },
  "OMc8V4AVH5q5z0Sis8vp": {
    "companyname": "Amazon",
    "symbol": "AMZN",
    "price": 2419.49,
    "categories": ["E-commerce", "consumer products"]
  }
}

let newObject = {}

for (const property in response) {
  if (response[property].categories.indexOf("technology") > -1) {
    newObject[property] = response[property];
  }
}

console.log(newObject)