[英]JavaScript filtering Object on a property that is an array
我有以下有效载荷(小样本)从 api 作为 Object 返回。
{
"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"]
},
我希望能够返回在类别数组中包含给定值的每个 object。 例如,返回类别数组中包含“技术”的所有 object。
如何在 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.