【问题标题】:js - Filter out attribute based on keyjs - 根据键过滤掉属性
【发布时间】:2019-11-03 03:38:37
【问题描述】:

我有一个js 变量,比如:

var mylist = [[ {item: 'emp', pos:1}, {age: 21, name: 'AA'}, {年龄:22,姓名:'BB'}, ], ... ];

在我的js 脚本中,我阅读了

var out = (mylist[0].map(function(i, j){return i.age}))
total = out.length   // this has 3 -->  ['', '21', '22']

如何过滤掉列表中的元素,只返回带有 age 关键字的元素,所以我的 总计 = ['21', '22']

我是 js 的新手,所以不确定如何处理 ?lambda? 函数来添加条件或过滤/返回 "clean" 数据。

【问题讨论】:

    标签: javascript node.js lambda


    【解决方案1】:

    您可以在map() 之后使用filter() 删除那些undefined 值。

    var mylist = [[ {item: 'emp', pos:1}, {age: 21, name: 'AA'}, {age: 22, name: 'BB'}]];
    
    var out = mylist[0].map(i => i.age).filter(age => age);
    
    console.log(out);

    【讨论】:

    • js 吗?这是什么语言,斯卡拉?
    • @Lou_Ds - 它是 JavaScript。我正在使用 ES6 中引入的arrow functions。您也可以像在问题中那样使用常规函数。
    • 你应该filter first and then map,所以如果有没有年龄的条目,你需要在映射时循环更少的值
    • 没错@CodeManiac。感谢您指出。我认为reduce() 在这里是理想的,因为这样我们只需要循环一次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多