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