[英]Dynamically pass keys to map to new object
抱歉,標題令人迷惑,不知道如何用一個襯里來形容。
我具有以下實用程序功能:
module.exports.reduceObject = item => (({ price, suggested_price }) => ({ price, suggested_price }))(item);
它從鍵price
和suggest_price
獲取values
,並返回僅包含這些鍵和值的新對象。
然后,我可以打開一個像這樣的對象:
inspect_link: 'steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198279893060A%item_id%D9567622191659726240',
price: '2.15',
suggested_price: '2.90',
is_featured: false,
float_value: '-1.00000',
pattern_info:
{ paintindex: 0,
paintseed: null,
rarity: 3,
quality: 4,
paintwear: null },
is_mine: false,
tags: { type: 'Collectible', quality: 'Normal', rarity: 'High Grade' },
fraud_warnings: [],
stickers: null,
updated_at: 1501880427 }
簡化版:
{"price":"2.59","suggested_price":"1.41"}
然后將其存儲在MongoDB數據庫中。
我希望能夠在按鍵(如通過price
, suggested_price
動態所以我可以在任何物體減少自身的縮小版,但我在努力尋找一個良好的實施。
我寫了一些東西,例如:
module.exports.reduceObject = (item, keys) => (({ ...keys }) => ({ ...keys }))(item);
這是無效的,但老實說,我什至不知道該如何處理。
有人可以提供解決方案嗎?
已經有功能強大的lodash庫可以滿足您的需求。 它具有pick
函數,該函數返回一個由picked對象屬性組成的對象:
let newItem = _.pick(item, ['price', 'suggested_price']);
我發現lodash的實現很難閱讀。 如果您像我一樣,這是一個更簡單的實現:
function pick(object, keys) {
const result = {};
for (const key of keys) {
if (object.hasOwnProperty(key)) {
result[key] = object[key];
}
}
return result;
}
根據您的使用,檢查密鑰是否實際上在源對象中可能很重要。 這以前使我不知所措。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.