簡體   English   中英

如何通過使用數組的值作為鍵來獲取 Object 的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM