相关疑难解决方法(0)

使用数组映射来过滤if条件的结果

我正在尝试使用数组映射来进一步过滤对象,以准备将其发送到服务器以进行保存.我可以过滤到1个键值,这很好,但是我想进一步检查它们并根据布尔值检查它们.

所以,现在这就是我所拥有的 -

$scope.appIds = $scope.applicationsHere.map( function(obj){
        if(obj.selected == true){
            return obj.id;
        }
    });
Run Code Online (Sandbox Code Playgroud)

这对于拉出id非常有用,但是如果他们选择的值== false,我不想在这个新数组中推送它们,所以我放了一个条件来进一步过滤.这有点工作,我得到一个id的数组,但是具有.selected == false的id仍然在数组中,只是值为null.所以,如果我在对象中有4个项目,其中2个是假的,它看起来像这样 -

 appIds = {id1, id2, null, null};
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 有没有办法在没有空值的情况下执行此操作.谢谢阅读!

javascript map angularjs

36
推荐指数
4
解决办法
7万
查看次数

FlatMap 与 Reduce 用于映射和过滤 - 是否推荐使用其中一种?

根据此 SO threadflatMap或者reduce当需要映射和过滤一组对象时推荐,特别是如果他们想避免多次循环遍历集合。就我个人而言,我更喜欢使用它flatMap,因为我认为它更容易阅读,但这当然完全是主观的。除了 的浏览器兼容性问题之外flatMap,是否普遍推荐一种方法或比另一种方法更有利(可能是因为但不限于性能或可读性的原因)?

更新:这是来自 flatMap 过滤的参考答案的示例:

var options = [{
    name: 'One',
    assigned: true
  },
  {
    name: 'Two',
    assigned: false
  },
  {
    name: 'Three',
    assigned: true
  },
];

var assignees = options.flatMap((o) => (o.assigned ? [o.name] : []));
console.log(assignees);

document.getElementById("output").innerHTML = JSON.stringify(assignees);
Run Code Online (Sandbox Code Playgroud)
<h1>Only assigned options</h1>
<pre id="output"> </pre>
Run Code Online (Sandbox Code Playgroud)

javascript arrays

5
推荐指数
1
解决办法
1万
查看次数

如何在 JavaScript 中过滤和映射对象数组?

我有一个对象数组
,我想从中有条件地创建另一个对象数组。

例如。——

var devs = [
    {
        name: 'A',
        age: 26,
        tech: ['JavaScript','React'],
        addr:{
            country:'India',
            city:'Pune'
        }
    },
    {
        name: 'B',
        age: 25,
        tech: ['Node','AngularJs'],
        addr:{
            country:'USA',
            city:'NY'
        }
    },
    {
        name: 'C',
        age: 27,
        tech: ['React','AWS'],
        addr:{
            country:'UK',
            city:'London'
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

我想要一个在他们的“技术”字段数组中“反应”的对象数组
并且只想显示他们的名称和技术,
以下是预期的输出 -

[
    {
        name: 'A',
        tech: ['JavaScript','React']
    },
    {
        name: 'C',
        tech: ['Java','React'],
    }
]
Run Code Online (Sandbox Code Playgroud)

我知道可以使用条件过滤方法,
但是如何从对象数组中删除不必要的字段?
这里可以使用map方法吗?如果是这样,我该如何实施?

以下是我的半熟代码 -

var filteredDevs = devs.filter(temp => temp.tech.includes('React'));
Run Code Online (Sandbox Code Playgroud)

javascript arrays

3
推荐指数
1
解决办法
1万
查看次数

javascript - 在对象数组中,返回任何值与特定字符串匹配的对象

我正在我的应用程序中实现搜索功能。UI 中的搜索结果是基于对象数组返回的。本质上,我想要做的是迭代每个对象中的名称、custNumber 和潜行值,并且只返回包含包含字符串(从用户搜索栏生成)的值的对象。这个想法是用户可以搜索对象中的任何内容并产生正确的结果

这是我的阵列

var result = [{
  name: 'Donna Shomaker',
  custNumber: '6658924351',
  sneak: 'string1 string1 string1',
  foo: false,
  bar: false,
},
{
  name: 'Ron Duluth',
  custNumber: '8812654434',
  sneak: 'string2 string2 string2',
  foo: false,
  bar: false,
},
{
  name: 'Jimmy Dawson',
  custNumber: '8908198230',
  sneak: 'string3 string3 string3',
  foo: false,
  bar: false,
}
]
Run Code Online (Sandbox Code Playgroud)

这是我走了多远

return result.filter(convo => {
  return convo.name.toLowerCase().includes(searchbarVal.toLowerCase())
})
Run Code Online (Sandbox Code Playgroud)

这里明显的问题是这只返回基于名称值的对象。但是,我需要它将每个对象中的名称、custNumber 和潜行值与用户搜索进行比较。我已经尝试过 forEach、object.values 和 object.entries 方法,但无法让它们工作。非常感谢这里的任何帮助!!

javascript arrays sorting filtering vue.js

2
推荐指数
1
解决办法
1621
查看次数

标签 统计

javascript ×4

arrays ×3

angularjs ×1

filtering ×1

map ×1

sorting ×1

vue.js ×1