javascript - 使用 .filter() 返回布尔值
问题描述
我正在尝试从下面的代码中返回一个布尔值
data = [{name: "Jack", value: "Y", city: "NY"},
{name: "John", value: "Y", city: "NJ"},
{name: "John", value: "N", city: "NY"}]
从上面的数据中,我想通过使用基于城市的过滤器返回一个布尔值作为 NY 并且谁的值为“Y”
尝试了以下方法
const trail1 = data.filter(function (item) {
return Boolean(item.city === "NY" && item.value === "Y");
});
const trail2 = data.filter(function (item) {
return (item.city === "NY" && item.value === "Y");
}).length === 1;
const trail3 = data.some(function(item){
return item === (item.city === "NY" && item.value === "Y");
});
trail1返回满足条件但不返回 true 或 false 的数组对象
trail2根据数据返回真或假。但是想知道是否有更好的方法来代替使用.length
trail3返回 false 总是不确定它出了什么问题。因为它的城市为 NY 并且值 = Y 存在于数据对象
如果 JavaScript 数组包含一个元素 但没有帮助,则返回 true
解决方案
您正在寻找Array.some()
:
some() 方法测试数组中的至少一个元素是否通过了提供的函数实现的测试。它返回一个布尔值。
Array.some()
测试通过后也会立即停止执行,并且不会总是像Array.filter()
会那样迭代所有项目。
注意:如果您希望数组中的所有元素都通过测试,则可以true
使用Array.every
.
const data = [{"name":"Jack","value":"Y","city":"NY"},{"name":"John","value":"Y","city":"NJ"},{"name":"John","value":"N","city":"NY"}]
const result = data.some(item =>
item.city === "NY" && item.value === "Y"
)
console.log(result)
推荐阅读
- css - 封面有 4 张不同尺寸的图片?
- django - 如何将值插入相关模型?
- jupyter-notebook - 禁止在 Jupyter Notebook PDF 导出中打印单元格
- android - 在约束布局中是否可以将 4 个 TextViews 放在一个水平链中,每个视图之间的空间不同?
- tensorflow - 为什么我的卷积实现比 Tensorflow 的慢?
- sql - SQL如何设置这个where子句来检查两个不同的字段?
- python - 在 IPython 控制台中运行内核的问题
- python - 如何在python(tkinter)中捕获窗口后面的图像
- google-cloud-platform - 我无法在谷歌云平台上发布 .net core 3.0 版本
- asp.net-core - Ocelot 网关:没有这样的主机是已知的