当前位置: 首页 > 知识库问答 >
问题:

返回子对象[重复]的内联javascript过滤器

范承教
2023-03-14

我试图在一个对象数组上调用过滤器方法,但我不想返回整个对象。我只想返回对象的一部分。

[
   {val: 0, val2: 'a'},
   {val: 1, val2: 'b'},
   {val: 2, val2: 'c'},
   {val: 3, val2: 'd'}
].filter( obj => {
    if (obj.val > 1){
        return obj.val2
}})

这个过滤函数返回

[ { val: 2, val2: 'c' }, { val: 3, val2: 'd' } ]

但应该正在返回

[ { val2: 'c' }, { val2: 'd' } ]

使用map的问题是,我不希望未定义的被注入到数组中

共有3个答案

柳胜
2023-03-14

由于要在经过的迭代中构造新对象,因此可以使用。映射以在过滤后变换所有经过的对象:

js lang-js prettyprint-override">const result = [
   {val: 0, val2: 'a'},
   {val: 1, val2: 'b'},
   {val: 2, val2: 'c'},
   {val: 3, val2: 'd'}
]
  .filter(obj => obj.val > 1)
  .map(({ val2 }) => ({ val2 }));
console.log(result);
赫连方伟
2023-03-14

您可以结合地图和过滤器。

dataArray.filter(obj => obj.val > 1 && obj.val2).map(obj => obj.val2);
吴兴国
2023-03-14

要使用reduce进行此操作,请将其保留为1次迭代,并只在数组中推送要保留的项。

js lang-js prettyprint-override">const result = [
   {val: 0, val2: 'a'},
   {val: 1, val2: 'b'},
   {val: 2, val2: 'c'},
   {val: 3, val2: 'd'}
].reduce((prev, obj) => {
    if (obj.val > 1)
        prev.push({ val2: obj.val2 });
    return prev;
}, []);

console.log(result)
 类似资料:
  • 尝试创建一个函数,该函数使用筛选器,但不使用for函数,也不使用同时循环函数或Foreach函数,该函数将循环遍历对象数组,仅返回其属性值。例如, 所以如果我打电话 我应该得到一个数组的返回=[“bleh”,“blah”]我只是不确定如何在这些指导原则下实现过滤器。我也在考虑使用链函数。地图 ////下面是整个代码挑战规范///// 基础:筛选练习4/18 使用数组#过滤器编写一个名为getSha

  • 我在一个网站上使用angularjs,那里有一个搜索输入,可以过滤视图上的列表。此列表显示为一个ng-repeat,该ng-repeat具有搜索输入中的筛选器: 搜索输入:

  • 问题内容: 我有一系列对象,我想知道搜索它的最佳方法。给定以下示例,我如何搜索和?jQuery有什么可以帮助的吗?还是我必须自己蛮力搜​​索? 问题答案: 您可以使用:

  • 我有: 我尝试使用map()和filter()实现myFunction,但无法使其正常工作。如果我有接近的想法,我会展示一些我尝试过的代码,不幸的是,情况并非如此。任何帮助都将不胜感激!

  • 问题内容: 我有两个阵列。我正在用PubSidebar过滤基于groupKey。 如果父母重视:日记或存款或任何价值或角色:公共,我在传递内容数组内的对象时遇到问题。我必须在基于的内容数组中传递值。 如果存在Journals and Deposits,则在内容数组内添加Journals and Deposit数据,包括公共数据。(三个对象) 如果存在Journals,则将Contents数组内的J

  • 设备类型.java DeviceTelemetry.java (枚举类) 我想获取所有DeviceType Id,它们的DeviceTelem计名称以“System”(String)开头。 我做了这样的事情:— 谁能告诉我如何从中获取DeviceType Id?