javascript - JS过滤什么是item[key]?
问题描述
我有以下工作但让我感到困惑。有人可以解释一下 item[key] 指的是什么吗?
const items=[{name:"Joe",occupied:"no",mobile:"yes",treatment:"no",date:"29-03-2020",age:"15",stuff:["A","B","C"],type:["1","2"]},{name:"Jack",occupied:"yes",mobile:"no",treatment:"no",date:"02-03-2020",age:"20",stuff:["A","B","C","D","E"],type:["8","6"],misc:["otherStuff","someStuff"]},{name:"Jane",occupied:"no",mobile:"yes",treatment:"yes",date:"15-02-2020",age:"28",stuff:["C","D","E"],type:["4","7"],something:["xxx","ccc"]}];
const keysWithArrays = new Set(
items.flatMap(
item => Object.keys(item).filter(key => Array.isArray(item[key]))
)
);
console.log([...keysWithArrays]);
解决方案
对于一个对象item
,例如
{
name:"Joe",
occupied:"no",
}
迭代它的键Object.keys
给你['name', 'occupied']
. 访问item[key]
对象将为您提供该键的值,例如'Joe'
or 'no'
。
这是做同样事情的另一种方法,但是使用Object.entries
,它给出了一个条目数组(键值对,作为一个数组:)[[key, value], [key, value], [key, value]]
而不是一个键数组([key, key, key]
):
const items=[{name:"Joe",occupied:"no",mobile:"yes",treatment:"no",date:"29-03-2020",age:"15",stuff:["A","B","C"],type:["1","2"]},{name:"Jack",occupied:"yes",mobile:"no",treatment:"no",date:"02-03-2020",age:"20",stuff:["A","B","C","D","E"],type:["8","6"],misc:["otherStuff","someStuff"]},{name:"Jane",occupied:"no",mobile:"yes",treatment:"yes",date:"15-02-2020",age:"28",stuff:["C","D","E"],type:["4","7"],something:["xxx","ccc"]}];
const keysWithArrays = new Set(
items.flatMap(
item => Object.entries(item)
.filter(([key, value]) => Array.isArray(value))
.map(([key]) => key)
)
);
console.log([...keysWithArrays]);
(但这需要一个额外.map
的最后)
推荐阅读
- vue.js - vee-validate 循环下每一行的文件上传验证
- r - 反应数据表中的R闪亮错误日期输出
- haskell - 如何在 Windows 上安装 threadscope?
- scala - SBT 的依赖问题
- python - Python 3.6.0 执行卡在 importlib.import_module
- css - 样式化 react-alice-carousel 点
- sql - 嵌套项目未正确分组
- python - 如何在熊猫数据框上返回空值或无?
- javascript - 使用swipejs时如何选择指定对象周围的相邻元素
- python-3.x - Python requests.text 添加空行