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