【问题标题】:JS filter what is item[key]?JS过滤什么是item[key]?
【发布时间】:2020-03-29 21:49:32
【问题描述】:

我有以下工作但让我感到困惑。有人能解释一下 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[key] 是item 对象中的每个元素

标签: javascript object filter


【解决方案1】:

对于一个对象,item,例如

{
  name:"Joe",
  occupied:"no",
}

使用Object.keys 遍历它的键会得到['name', 'occupied']。访问对象上的item[key] 将为您提供该键的值,例如'Joe''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

【讨论】:

    猜你喜欢
    • 2020-01-21
    • 1970-01-01
    • 2017-03-03
    • 2017-10-21
    • 2019-06-15
    • 1970-01-01
    • 2012-06-17
    • 2015-07-22
    相关资源
    最近更新 更多