我想過濾和重組一些特定的資料,但我在讓它產生正確的結構時遇到了一些麻煩。
我在這個結構中有這個資料回應....
var response = {
badProperty1: "bad property text"
goodProperty1: "abc"
goodProperty2: "bcd"
goodProperty3: "cde"
goodProperty4: "def"
goodProperty5: "efg"
badProperty2: "fgh"
};
我想將我的回應物件完全轉換為這種結構的陣列......
var newFilteredStructuredArray = [
{goodProperty1: 'abc'},
{goodProperty2: 'bcd'},
{goodProperty3: 'cde'},
{goodProperty4: 'def'},
{goodProperty5: 'fgh'}
];
但是,我想在獲得新陣列之前過濾掉不良屬性。我希望我的陣列只包含這些特定的屬性名稱并過濾我開始使用的所有其他內容。
var possiblePropertyNames = ['goodProperty1', 'goodProperty2', 'goodProperty3', 'goodProperty4', 'goodProperty5'];
uj5u.com熱心網友回復:
使用filter和map在回應的物件條目上的實作。在過濾器階段,我只過濾掉它在possiblePropertyNames. 然后在地圖階段,我以您需要的格式回傳陣列
var possiblePropertyNames = ['goodProperty1', 'goodProperty2', 'goodProperty3', 'goodProperty4', 'goodProperty5'];
var response = {badProperty1: "bad property text",goodProperty1: "abc",goodProperty2: "bcd",goodProperty3: "cde",goodProperty4: "def",goodProperty5: "efg",badProperty2: "fgh"}
var newFilteredStructuredArray = Object.entries(response).filter(([k,v]) => possiblePropertyNames.includes(k)).map(([k,v]) => ({[k]:v}))
console.log(newFilteredStructuredArray)
沒有 es6
var possiblePropertyNames = ['goodProperty1', 'goodProperty2', 'goodProperty3', 'goodProperty4', 'goodProperty5'];
var response = {badProperty1: "bad property text",goodProperty1: "abc",goodProperty2: "bcd",goodProperty3: "cde",goodProperty4: "def",goodProperty5: "efg",badProperty2: "fgh"}
var newFilteredStructuredArray = Object.keys(response)
.filter(function(a){
return possiblePropertyNames.includes(a)
})
.map(function(b){
return {[b]:response[b]}
})
console.log(newFilteredStructuredArray)
正如Andreas在評論中指出的那樣,僅使用陣列map上的a更新更好的答案possiblePropertyNames
var possiblePropertyNames = ['goodProperty1', 'goodProperty2', 'goodProperty3', 'goodProperty4', 'goodProperty5'];
var response = {badProperty1: "bad property text",goodProperty1: "abc",goodProperty2: "bcd",goodProperty3: "cde",goodProperty4: "def",goodProperty5: "efg",badProperty2: "fgh"}
var newFilteredStructuredArray = possiblePropertyNames.map(prop => ({[prop]:response[prop]}))
console.log(newFilteredStructuredArray)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454587.html
標籤:javascript 数组 字典 目的 筛选
下一篇:忽略未傳遞的引數
