簡體   English   中英

如何過濾對象數組並獲取過濾后的對象值

[英]How to filter array of objects and get filtered object value

我有一個數組模型如下:

nodes:[
 { id: 1, label: 'label1'},
 { id: 2, label: 'label2'},
 { id: 3, label: 'label3'}
]

我想通過id獲得節點過濾的標簽

我嘗試了另一種方法,但沒有成功

const selectedNode = 2;

const nodeLabel = nodes.filter(({id}) => id.label ? id === selectedNode) // its filter here

您可以通過傳遞提供的callback函數來使用find方法。

find()方法返回通過提供的測試功能的數組中第一個元素的值。 否則返回undefined

 let nodes=[ { id: 1, label: 'label1'}, { id: 2, label: 'label2'}, { id: 3, label: 'label3'} ]; let id=2; let node = nodes.find(a=>a.id == id); console.log(node ? node.label : 'id not found'); 

nodes.find(node => node.id === selectedNode).label

你很親近

這條線

nodes.filer(({id}) => id.label ? id === selectedNode)

有幾個問題( 假設Filer只是一個錯字

  • 它正在將整數與對象進行比較。 id是這里的對象)

  • filter將提供對象列表,而不是屬性label

  • 您正在將labelid值進行比較。

  • {id}替換為id

只需將其修改為

nodes.filter( (id) => id.id === selectedNode )[0].label

演示

 var nodes = [ { id: 1, label: 'label1'}, { id: 2, label: 'label2'}, { id: 3, label: 'label3'} ]; var selectedNode = 2; console.log( nodes.filter( (id) => id.id === selectedNode )[0].label ); 

您可以通過幾種方法來完成自己想做的事情。 這是一對使用本機Array方法的方法。

  1. 鏈式filter以及map和解構返回的數組。

     const [nodeLabel] = nodes .filter(({id}) => id === selectedNode) .map(({label}) => label) 
  2. 使用reduce

     const nodeLabel = nodes .reduce((returnValue, item) => { if (item.id === selectedNode) return item.label return returnValue }) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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