[英]How to get the Value of an Object by using Value of Array as Key
我有一個包含多個值的數組。 我還有一個包含數據的 object。
現在我想創建一個 object 只保存與數組的值具有相同鍵的數據。
const array = ["foo", "bar", "foo2", "bar2"]
var obj = {foo:"string1", fue:"string2", bar:"string3"
我要創建的 Object 應該如下所示:
var result = {foo:"string1", bar:"string3"}
只需遍歷 object 鍵並使用Array.prototype.includes
查看它們是否存在於數組中,並將值添加到結果 object
const array = ["foo", "bar", "foo2", "bar2"] var obj = {foo:"string1", fue:"string2", bar:"string3"} var result = {}; Object.keys(obj).forEach(key => { if(array.includes(key)) { result[key] = obj[key]; } }) console.log(result)
同樣正如@Jacob 指出的那樣,如果您遍歷數組並從 object 中選擇鍵(如果它們作為 object 的訪問鍵存在)是 O(1) 操作,而檢入數組是 O(n) 操作,則效率會更高
const array = ["foo", "bar", "foo2", "bar2"] var obj = {foo:"string1", fue:"string2", bar:"string3"} var result = {}; array.forEach(key => { if(obj[key]) { result[key] = obj[key]; } }) console.log(result)
這將是我的方法:
const obj = { foo:"string1", fue:"string2", bar:"string3" };
const subset = pick(obj, ["foo", "bar", "foo2", "bar2"]);
function pick(obj, props) {
return props.reduce((result, prop) => {
return (prop in obj) ? Object.assign(result, { [prop]: obj[prop] }) : result;
}, {});
}
(如果你已經在使用 lodash,有一個_.pick
方法可以做到這一點)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.