[英]Find a member in an object literal array
是否可以在作為整個項目數組一部分的對象文字中定位一個成員字段,而無需遍歷整個數組? 例如:
let items = [
{
id: "abc",
name: "john"
},
{
id: "def",
name: "steve"
},
{
id: "ghi"
name: "bob"
}
]
如果我要引用名稱等於steve
的數組元素,是否有一種獲取它但又不遍歷所有項目並檢查name成員的方法?
如果沒有顯式循環,則可以使用Array#find函數從數組中獲取對象。 但是無論如何,您都需要在某種條件下進行比較以獲得所需的條件。 而且,如果您不知道項目的索引,則需要遍歷數組。 您可以使用內置方法來代替顯式循環。
let items = [ { id: "abc", name: "john" }, { id: "def", name: "steve" }, { id: "ghi", name: "bob" } ]; const obj = items.find(item => item.name === 'steve'); console.log(obj);
是。 我想要一個簡單的方法,僅給出名稱即可返回索引
Array.findIndex
做到這一點,但是它仍然會迭代
let items = [ { id: "abc", name: "john" }, { id: "def", name: "steve" }, { id: "ghi", name: "bob" } ] var index = items.findIndex( item => item.name === 'steve' ); console.log(index)
如果您經常需要從數組中按名稱獲取對象,則可以創建一個名稱->對象的映射(一次迭代),然后使用該映射獲取對象:
const items = [ { id: "abc", name: "john" }, { id: "def", name: "steve" }, { id: "ghi", name: "bob" } ]; const itemsMap = items.reduce((m, o) => m.set(o.name, o), new Map()); console.log(itemsMap.get('steve')); console.log(itemsMap.get('bob'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.