簡體   English   中英

JavaScript 如何通過動態鍵過濾對象數組?

[英]JavaScript How to filter array of objects by dynamic key?

我有一個包含具有動態鍵的對象的數組,我的目標是查找該數組是否包含特定鍵,如何實現?

 let arr = [ {item1: { key: 'sdfd', value:'sdfd' }}, {item2: { key: 'sdfd', value:'sdfd' }}, {item3: { key: 'sdfd', value:'sdfd' }} ] let target = 'item1' //result array let arr = [ {item1: { key: 'sdfd', value:'sdfd' }}, ]

使用Array#filter()in運算符

 let arr = [ {item1: { key: 'sdfd', value:'sdfd' }}, {item2: { key: 'sdfd', value:'sdfd' }}, {item3: { key: 'sdfd', value:'sdfd' }} ] let target = 'item1' console.log( arr.filter(i => target in i) )

根據您的標題,我假設您想嘗試使用array.filter ,因此請繼續嘗試使用array.filter ,這是一個選項:

 let arr = [ {item1: { key: 'sdfd', value:'sdfd' }}, {item2: { key: 'sdfd', value:'sdfd' }}, {item3: { key: 'sdfd', value:'sdfd' }} ] let target = 'item1' let newarr= arr.filter(each=>Object.keys(each).toString() ==target) console.log(newarr)

JavaScript 具有為您返回對象鍵的內置函數:

var x = {
    name : "Romulo",
    age : 17
}

console.log(Object.keys(x))

Output:

["name","age"]

這將返回一個數組,您只需要檢查您的密鑰是否在其中。

您可以使用 Array.filter 方法和 Object.hasOwn 方法,請不要使用in運算符,它有一些優先級問題。

 const arr = [ {item1: { key: 'sdfd', value:'sdfd' }}, {item2: { key: 'sdfd', value:'sdfd' }}, {item3: { key: 'sdfd', value:'sdfd' }} ] function filterByKey(list, target) { return list.filter( item => Object.hasOwn(item, target) ); } const target = "item1"; console.log( filterByKey(arr, target) );

已有數據

[
  {item1: { key: 'sdfd', value:'sdfd' }},
  {item2: { key: 'sdfd', value:'sdfd' }},
  {item3: { key: 'sdfd', value:'sdfd' }}
]

想要數據

想要來自target的數據,當 target 是item1時:

[
  {item1: { key: 'sdfd', value:'sdfd' }}
]

當前代碼

 let arr = [ {item1: { key: 'sdfd', value:'sdfd' }}, {item2: { key: 'sdfd', value:'sdfd' }}, {item3: { key: 'sdfd', value:'sdfd' }} ] let target = 'item1' // result array let want = [ {item1: { key: 'sdfd', value:'sdfd' }}, ]

答案

 let arr = [ {item1: { key: 'sdfd', value:'sdfd' }}, {item2: { key: 'sdfd', value:'sdfd' }}, {item3: { key: 'sdfd', value:'sdfd' }} ] let target = 'item1' // result array let want = [ {item1: { key: 'sdfd', value:'sdfd' }}, ] let answer = arr.filter(object => object[target]) console.log('answer:', answer)

這回答了你的問題了嗎? 或者如果不發表評論來說明出了什么問題。

暫無
暫無

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

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