簡體   English   中英

動態傳遞鍵以映射到新對象

[英]Dynamically pass keys to map to new object

抱歉,標題令人迷惑,不知道如何用一個襯里來形容。

我具有以下實用程序功能:

module.exports.reduceObject = item => (({ price, suggested_price }) => ({ price, suggested_price }))(item);

它從鍵pricesuggest_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數據庫中。

我希望能夠在按鍵(如通過pricesuggested_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM