简体   繁体   English

从值数组 JavaScript 中过滤键上的对象数组

[英]Filter array of objects on key from array of values JavaScript

I have an array of objects [{...}, {...}] with 2 objects inside.我有一个对象数组 [{...}, {...}] 里面有 2 个对象。 I would like to filter them with values from an array using JavaScript.我想使用 JavaScript 使用数组中的值过滤它们。 The inital object could be any length from 1 to n.初始 object 可以是从 1 到 n 的任意长度。 I think I need to filter on the key from the json data in a loop using.includes()我想我需要使用.includes() 在循环中从 json 数据中过滤密钥

This is a mess but I think this needs to be inside another loop for the length of jsonData这是一团糟,但我认为这需要在另一个循环中为 jsonData 的长度

          for (i=0; i<finalArray.length; i++){
            jsonData= Object.fromEntries(Object.entries(jsonData).filter(([key, value]) => key.includes(finalArray[i])) )
          }
0: { "cbsa_cde": "33460", "cbsa_nm": "Minneapolis-St. Paul-Bloomington, MN-WI", "countycode": "27053", "hh_50k_100k_201612": 71, "hh_50k_100k_201706": 86, "hh_50k_100k_201712": 60, "hh_50k_100k_201806": 37, "hh_50k_100k_201812": 49, "hh_50k_100k_201906": 35, "hh_50k_100k_201912": 38, "hh_50k_100k_202006": 46, "hh_50k_100k_202012": 58, "hh_100k_250k_201612": 120, "hh_100k_250k_201706": 121, "hh_100k_250k_201712": 153, "hh_100k_250k_201806": 126, "hh_100k_250k_201812": 126, "hh_100k_250k_201906": 125, "hh_100k_250k_201912": 120, "hh_100k_250k_202006": 99, "hh_100k_250k_202012": 84}   

1: { "cbsa_cde": "33460", "cbsa_nm": "Minneapolis-St. Paul-Bloomington, MN-WI", "countycode": "27053","hh_50k_100k_201612": 20, "hh_50k_100k_201706": 33, "hh_50k_100k_201712": 22, "hh_50k_100k_201806": 41, "hh_50k_100k_201812": 52, "hh_50k_100k_201906": 45, "hh_50k_100k_201912": 40, "hh_50k_100k_202006": 41, "hh_50k_100k_202012": 50, "hh_100k_250k_201612": 99, "hh_100k_250k_201706": 108, "hh_100k_250k_201712": 130, "hh_100k_250k_201806": 84, "hh_100k_250k_201812": 90, "hh_100k_250k_201906": 97, "hh_100k_250k_201912": 89, "hh_100k_250k_202006": 95, "hh_100k_250k_202012": 87}   

The array I would like to use as a filter我想用作过滤器的数组

FilterArray = [ "HH_50K_100K_201612", "HH_50K_100K_201706", "HH_100K_250K_201612", "HH_100K_250K_201706" ]

Final output would be best if it modifies the original.最终的 output 最好是修改原版。

jsonData= 
0: {"hh_50k_100k_201612": 71, "hh_50k_100k_201706": 86, "hh_100k_250k_201612": 120, "hh_100k_250k_201706": 121}   

1: {"hh_50k_100k_201612": 20, "hh_50k_100k_201706": 33, "hh_100k_250k_201612": 99, "hh_100k_250k_201706": 108}

You can use array#map with Object.fromEntries() .您可以将array#mapObject.fromEntries()一起使用。 Iterate over each object and map over key of filterArray and generate the resultant object.filterArray的键上迭代每个 object 和 map 并生成结果 object。

 const data = [ { "cbsa_cde": "33460", "cbsa_nm": "Minneapolis-St. Paul-Bloomington, MN-WI", "countycode": "27053", "hh_50k_100k_201612": 71, "hh_50k_100k_201706": 86, "hh_50k_100k_201712": 60, "hh_50k_100k_201806": 37, "hh_50k_100k_201812": 49, "hh_50k_100k_201906": 35, "hh_50k_100k_201912": 38, "hh_50k_100k_202006": 46, "hh_50k_100k_202012": 58, "hh_100k_250k_201612": 120, "hh_100k_250k_201706": 121, "hh_100k_250k_201712": 153, "hh_100k_250k_201806": 126, "hh_100k_250k_201812": 126, "hh_100k_250k_201906": 125, "hh_100k_250k_201912": 120, "hh_100k_250k_202006": 99, "hh_100k_250k_202012": 84}, { "cbsa_cde": "33460", "cbsa_nm": "Minneapolis-St. Paul-Bloomington, MN-WI", "countycode": "27053","hh_50k_100k_201612": 20, "hh_50k_100k_201706": 33, "hh_50k_100k_201712": 22, "hh_50k_100k_201806": 41, "hh_50k_100k_201812": 52, "hh_50k_100k_201906": 45, "hh_50k_100k_201912": 40, "hh_50k_100k_202006": 41, "hh_50k_100k_202012": 50, "hh_100k_250k_201612": 99, "hh_100k_250k_201706": 108, "hh_100k_250k_201712": 130, "hh_100k_250k_201806": 84, "hh_100k_250k_201812": 90, "hh_100k_250k_201906": 97, "hh_100k_250k_201912": 89, "hh_100k_250k_202006": 95, "hh_100k_250k_202012": 87} ], filterArray = [ "HH_50K_100K_201612", "HH_50K_100K_201706", "HH_100K_250K_201612", "HH_100K_250K_201706" ], result = data.map(o => Object.fromEntries(filterArray.map(key => [key.toLowerCase(), o[key.toLowerCase()]]))); console.log(result);

Use map() to loop over the array of objects and create a new array with the result of filtering the object properties.使用map()循环对象数组并使用过滤 object 属性的结果创建一个新数组。

You should be using FilterArray.includes() , not key.includes() .您应该使用FilterArray.includes() ,而不是key.includes()

 const finalArray = [ { "cbsa_cde": "33460", "cbsa_nm": "Minneapolis-St. Paul-Bloomington, MN-WI", "countycode": "27053", "hh_50k_100k_201612": 71, "hh_50k_100k_201706": 86, "hh_50k_100k_201712": 60, "hh_50k_100k_201806": 37, "hh_50k_100k_201812": 49, "hh_50k_100k_201906": 35, "hh_50k_100k_201912": 38, "hh_50k_100k_202006": 46, "hh_50k_100k_202012": 58, "hh_100k_250k_201612": 120, "hh_100k_250k_201706": 121, "hh_100k_250k_201712": 153, "hh_100k_250k_201806": 126, "hh_100k_250k_201812": 126, "hh_100k_250k_201906": 125, "hh_100k_250k_201912": 120, "hh_100k_250k_202006": 99, "hh_100k_250k_202012": 84}, { "cbsa_cde": "33460", "cbsa_nm": "Minneapolis-St. Paul-Bloomington, MN-WI", "countycode": "27053","hh_50k_100k_201612": 20, "hh_50k_100k_201706": 33, "hh_50k_100k_201712": 22, "hh_50k_100k_201806": 41, "hh_50k_100k_201812": 52, "hh_50k_100k_201906": 45, "hh_50k_100k_201912": 40, "hh_50k_100k_202006": 41, "hh_50k_100k_202012": 50, "hh_100k_250k_201612": 99, "hh_100k_250k_201706": 108, "hh_100k_250k_201712": 130, "hh_100k_250k_201806": 84, "hh_100k_250k_201812": 90, "hh_100k_250k_201906": 97, "hh_100k_250k_201912": 89, "hh_100k_250k_202006": 95, "hh_100k_250k_202012": 87} ], filterArray = [ "HH_50K_100K_201612", "HH_50K_100K_201706", "HH_100K_250K_201612", "HH_100K_250K_201706" ]; const result = finalArray.map(jsonData => Object.fromEntries(Object.entries(jsonData).filter(([key, value]) => filterArray.includes(key.toUpperCase())))); console.log(result);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 从一个 Array 对象中提取键值,并使用带下划线 javascript 的提取值从其他对象中过滤 - Extract key values from one Array object and filter from other objects with the extracted values with underscore javascript 使用一个键的值数组过滤许多javascript对象 - Filter a number of javascript objects using an array of values for one key 根据对象键过滤对象数组 JavaScript - Filter JavaScript Array of Objects based on Objects Key 使用基于数组值的键连接来自多个对象的值 - Javascript - Join values from multiple objects with key based on array values - Javascript Javascript中过滤多个数组对象,匹配键值与多个值形成另一个数组 - Filter multiple Array Objects and match key values with multiple values form another array in Javascript 按 JavaScript 中的键和嵌套值过滤对象数组 - Filter an array of objects by key and nested value in JavaScript Javascript 通过动态键过滤对象数组 - Javascript Filter Array of Objects by Dynamic Key JavaScript 如何通过动态键过滤对象数组? - JavaScript How to filter array of objects by dynamic key? Javascript按另一个对象数组的键过滤对象数组 - Javascript filter array of objects by key of another array of objects 从对象数组获取键值数组,而又不知道对象数组的格式(Javascript)? - Get array of key-values from array of objects without knowing format of array of objects (Javascript)?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM