[英]Pick values inside the JSON object
在我的應用程序中,我正在閱讀用戶感興趣的鍵的字典,然后僅返回那些在答復對象中的鍵。 用戶可以指定其他密鑰名稱。
當我僅傳遞JSON對象時,我的解決方案就可以工作。
import * as _ from 'lodash';
originalData = {
"Cat" : "Cat Value",
"Dog" : "Dog Value",
"Rat" : "Rat Value"
}
transformMap = {
"Cat" : "catData",
"Dog" : "DogData"
}
let reply: any = {}
let Keys = _.keys(transformMap)
// Extract only the keys user wants.
let filter = _.pick(originalData , Keys );
if(!_.isEmpty(filter )) {
Object.keys(filter).forEach(function (key) {
reply[transformMap[key]] = originalData[key];
});
}
為此,輸出為-
reply= {
"catData" : "Cat Value",
"DogData" : "Dog Value"
}
上面的代碼有效,但是當原始數據為array類型時,我想應用類似的功能-
originalData = [
{
"Cat" : "Cat Value1",
"Dog" : "Dog Value1",
"Rat" : "Rat Value1"
},
{
"Cat" : "Cat Value2",
"Dog" : "Dog Value2",
"Rat" : "Rat Value2"
}
]
reply= [
{
"catData" : "Cat Value1",
"DogData" : "Dog Value1"
},
{
"catData" : "Cat Value2",
"DogData" : "Dog Value2"
}
]
有兩種方法都能獲得結果嗎?
將“密鑰轉換器”打包成一個函數。 然后用靈活的輸入將其包裝。
function transformAnything(data, tranformMap) {
const usingArray = data instanceof Array;
const arrayData = usingArray ? data : [data];
const transformedData = arrayData.map(
objectData => tranformObjectData(objectData, tranformMap)
);
return usingArray ? transformedData : transformedData[0];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.