我得到了這樣構建的物件,它是動態的,所以我不知道有多少嵌套物件和外部物件鍵。外面唯一已知的鍵是“bids”,里面是(需要的屬性)。
let data= {
"/9968336/header-bid-tag-0": {
"bids": [
{
"bidderCode": "appnexus",
"width": 300,
"height": 250,
"statusMessage": "Bid available",
"adId": "7a53a9d3",
"creative_id": 29681110,
"cpm": 0.5,
"adUrl": "https://nym1.ib.adnxs.com/ab?e=wqT_3QLzBKBqAgAAAgDWAAUIkav6sAUQucfc0v-nzQcYj…r=http://local:4000/examples/pbjs_partial_refresh_example.html",
"requestTimestamp": 1444844944095,
"responseTimestamp": 1444844944180,
"timeToRespond": 85,
"adUnitCode": "/19968336/header-bid-tag-0",
"bidder": "appnexus",
"usesGenericKeys": true,
"size": "300x250",
"adserverTargeting": {
"hb_bidder": "appnexus",
"hb_adid": "7a53a9d3",
"hb_pb": "0.50"
}
},{
"bidderCode": "pubmatic",
"width": "300",
"height": "250",
"statusMessage": "Bid available",
"adId": "1139e34e14",
"adSlot": "39620189@300x250",
"cpm": 1,
"ad": "<span class=\"PubAPIAd\"><script src='https://ad.turn.com/server/ads.js?pub=5757398&cch=36757096&code=37127675&l=3…tcGlkPUVERkNGMDY5LTA2ODctNDAxQy04NkMwLTIzQjNFNzI1MzdGNiZwYXNzYmFjaz0w_url='></script></span> <!-- PubMatic Ad Ends -->",
"adUrl": "https://aktrack.pubmatic.com/AdServer/AdDisplayTrackerServlet?operId=1&pubId…local:4000/examples/pbjs_partial_refresh_example.html&lpu=hotels.com",
"dealId": "",
"requestTimestamp": 1444844944105,
"responseTimestamp": 1444844944354,
"timeToRespond": 249,
"adUnitCode": "/19968336/header-bid-tag-0",
"bidder": "pubmatic",
"usesGenericKeys": true,
"size": "300x250",
"adserverTargeting": {
"hb_bidder": "pubmatic",
"hb_adid": "1139e34e14",
"hb_pb": "1.00"
}
},
{
"bidderCode": "rubicon",
"width": "300",
"height": "250",
"statusMessage": "Bid available",
"adId": "130d3b0d9b",
"cpm": 0.795995,
"ad": "<scri...pt>",
"ad_id": "3161645",
"sizeId": "15",
"requestTimestamp": 1444844944116,
"responseTimestamp": 1444844944396,
"timeToRespond": 280,
"adUnitCode": "/19968336/header-bid-tag-0",
"bidder": "rubicon",
"usesGenericKeys": true,
"size": "300x250",
"adserverTargeting": {
"hb_bidder": "rubicon",
"hb_adid": "130d3b0d9b",
"hb_pb": "0.50"
}
}
]
},
"/9968336/header-bid-tag1": {
"bids": [
{
"bidderCode": "casale",
"width": 0,
"height": 0,
"statusMessage": "Bid returned empty or error response",
"adId": "108c0ba49d",
"requestTimestamp": 1444844944130,
"responseTimestamp": 1444844944223,
"timeToRespond": 93,
"cpm": 6,
"adUnitCode": "/19968336/header-bid-tag1",
"bidder": "casale"
},
{
"bidderCode": "openx",
"width": "728",
"height": "90",
"statusMessage": "Bid available",
"adId": "14d7f9208f",
"ad_id": "537161420",
"cpm": 1.717,
"ad": "<iframe src=...tame>",
"requestTimestamp": 1444844944130,
"responseTimestamp": 1444844944490,
"timeToRespond": 360,
"adUnitCode": "/19968336/header-bid-tag1",
"bidder": "openx",
"usesGenericKeys": true,
"size": "728x90",
"adserverTargeting": {
"hb_bidder": "openx",
"hb_adid": "14d7f9208f",
"hb_pb": "1.50"
}
}
]
}
}
我想從內部物件中清除除 (cpm,bidder,adUnitCode) 之外的所有鍵和值,并回傳僅具有此屬性的新物件
我在這里掙扎,我到目前為止要做的事情
for(let propName in data) {
if(data.hasOwnProperty(propName)) {
let propValue = data[propName];
for(var insideProp in propValue.bids) {
if(propValue.bids.hasOwnProperty(insideProp)) {
let insideValue=propValue.bids[insideProp]
for(let insideLvl2 in insideValue) {
if(insideLvl2!=='cpm'){
insideValue.insideLvl2=null;
console.log(insideValue.insideLvl2);
}
}
}
}
}
}
謝謝你的幫助
uj5u.com熱心網友回復:
如果您只想要cpm, bidder, adUnitCode結果物件,那么您可以輕松地使用
const result = Object.entries(data).reduce((acc, [k, v]) => {
acc[k] = {
...v,
bids: v.bids.map(({ cpm, bidder, adUnitCode }) => ({
cpm,
bidder,
adUnitCode,
})),
};
return acc;
}, {});
編輯:如果你想在物件本身cpm=null沒有cpm屬性時回傳,那么你可以這樣做:
Object.entries(data).reduce((acc, [k, v]) => {
acc[k] = {
...v,
bids: v.bids.map(({ cpm = null, bidder = null, adUnitCode = null }) => ({ // change
cpm,
bidder,
adUnitCode,
})),
};
return acc;
}, {})
顯示代碼片段
let data = {
"/9968336/header-bid-tag1": {
bids: [
{
bidderCode: "casale",
statusMessage: "Bid returned empty or error response",
adId: "108c0ba49d",
requestTimestamp: 1444844944130,
responseTimestamp: 1444844944223,
timeToRespond: 93,
adUnitCode: "/19968336/header-bid-tag1",
bidder: "casale",
},
],
},
};
const result = Object.entries(data).reduce((acc, [k, v]) => {
acc[k] = {
...v,
bids: v.bids.map(({ cpm = null, bidder = null, adUnitCode = null }) => ({
cpm,
bidder,
adUnitCode,
})),
};
return acc;
}, {});
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/345366.html
標籤:javascript 目的 筛选
