4 回答

TA貢獻1880條經驗 獲得超4個贊
您可以e[k]
在添加之前檢查是否已定義,方法是使用obj
以下命令檢查e
對象是否具有該屬性:k
.hasOwnProperty()
const array = [{ "value": "0", "name": "5", "waste": "remove", "city": "NY" }, { "value": "0", "name": "51", "waste": "remove", } ];
const keys_to_keep = ['name', 'city'];
const result = array.map(e => {
? const obj = {};
? keys_to_keep.forEach(k => {
? ? if (e.hasOwnProperty(k))
? ? ? obj[k] = e[k]
? });
? return obj;
});
console.log(result)
如果要刪除的鍵不是動態的,您還可以使用解構賦值來提取要丟棄的屬性,并使用其余語法來獲取沒有這些屬性的對象:
const array = [{ "value": "0", "name": "5", "waste": "remove", "city": "NY" }, { "value": "0", "name": "51", "waste": "remove", } ];
const result = array.map(({value, waste, ...r}) => r);
console.log(result)

TA貢獻1934條經驗 獲得超2個贊
您可以檢查 forEach 中的值是否未定義:
const result = array2.map(e => {
const obj = {};
keys_to_keep.forEach(k => {
if (undefined !== e[k]) {
obj[k] = e[k]
}
)
return obj;
});

TA貢獻1797條經驗 獲得超4個贊
您可以使用.map
迭代對象,Object.entries
獲取每個項目的鍵值對,Object.fromEntries
將它們分組到結果對象中,并.filter
僅獲取帶有key
inkeys_to_keep
和 avalue
不是 的條目undefined
:
const array1 = [
? { "value": "0", "name": "5", "waste": "remove", "city": "NY" },
? { "value": "0", "name": "51", "waste": "remove" }
];
var keys_to_keep = ['name', 'city'];
const result = array1.map(item =>
? Object.fromEntries(
? ? Object.entries(item).filter(([key, value]) =>
? ? ? keys_to_keep.includes(key) && value !== undefined
? ? )
? )
);
??
console.log(result)

TA貢獻1804條經驗 獲得超2個贊
我將回答這兩部分。以下是執行此操作的步驟。
map()
在主陣列上使用。使用 獲取每個對象的條目
Object.entries()
。應用于
filter()
整個數組,刪除那些鍵不存在的整體keys_to_keep
現在進入第二部分。
使用
keys_to_keep
創建一個對象,其中每個鍵包含未定義的值。再次使用
map()
上一個結果并使用 Spread 運算符。首先傳播上面創建的對象,然后傳播原始值。這樣,如果沒有找到任何鍵,它將被設置為undefined
const
array1 = [
{
"value": "0",
"name": "5",
"waste": "remove",
"city": "NY"
},
{
"value": "0",
"name": "51",
"waste": "remove",
}
]
var keys_to_keep = ['name', 'city']
let obj = Object.fromEntries(keys_to_keep.map(x => [x, undefined]));
const res = array1.map(obj =>
Object.fromEntries(
Object.entries(obj).filter(([k, v]) => keys_to_keep.includes(k))))
.map(x => ({...obj, ...x}))
console.log(res)
添加回答
舉報