我有一個包含人名和年齡的物件
{"John":44,"Sarah":23,"Bob":43,"Kate":65,"Bill":18}
和一個提供員工姓名串列的陣列
['John', 'Bob', 'Kate', 'Bill', 'Fred']
我想創建一個新物件,其中僅包含物件和陣列中出現的那些人和他們的年齡。所以在這個例子中,新物件將包含
{"John":44,"Bob":43,"Kate":65,"Bill":18}
"Sarah":23并且Fred不出現,因為它們只出現在上述其中之一中。
任何人都可以建議如何做到這一點嗎?
uj5u.com熱心網友回復:
您可以使用reduce創建結果和運算子in來檢查鍵是否存在:
const obj = {"John":44,"Sarah":23,"Bob":43,"Kate":65,"Bill":18};
const keys = ['John', 'Bob', 'Kate', 'Bill', 'Fred'];
const result = keys.reduce((acc, el) => {
if (el in obj) acc[el] = obj[el];
return acc;
}, {});
console.log(result);
另一種方法是將物件轉換為陣列,使用過濾器并將結果轉換回來:
const obj = {"John":44,"Sarah":23,"Bob":43,"Kate":65,"Bill":18};
const keys = ['John', 'Bob', 'Kate', 'Bill', 'Fred'];
const result = Object.fromEntries(Object.entries(obj).filter(([key]) => keys.includes(key)));
console.log(result);
uj5u.com熱心網友回復:
簡單地
const
jso = { John: 44, Sarah: 23, Bob: 43, Kate: 65, Bill: 18 }
, arr = [ 'John', 'Bob', 'Kate', 'Bill', 'Fred' ]
, res = arr.reduce((r,a)=>(!!jso[a]?r[a]=jso[a]:'',r),{})
;
console.log(res)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/442108.html
標籤:javascript 数组 目的
下一篇:控制臺日志顯示的值與回傳值不同
