测试一个多维数组内的操作是否匹配一个数字
Javascript: test if an operation inside a multidimensional array matches a number
我有这样一个数组:
var tasks = [
["First Task",1,0],
["Second Task...",4,5],
["Third Task!",0,5]
];
注意:任务旁边的数字是人完成任务所需要的分和秒。
我想测试一下这些任务是否有一定的秒数。基本上,我想知道对于任何任务,第一个数字* 60 +第二个数字是否等于someNumOfSecs
。因此,如果someNumOfSecs == 60
,则条件将返回true
,但如果someNumOfSecs == 58
,则返回false。同样,我不想测试一个特定的任务,而是整个数组。我该怎么做呢?谢谢你。
顺便说一下:如果我的解释不是很清楚,我很抱歉,所以如果你有什么不明白的,请评论。
你可以使用Array.prototype.some(),看看是否有任何元素匹配你正在寻找的。
var value = 60;
var match = tasks.some(function (item) {
return (item[1] * 60 + item[2]) === value;
});
var tasks = [
["First Task",1,0],
["Second Task...",4,5],
["Third Task!",0,5]
];
function getByNumSeconds(secs) {
return tasks.filter(function(t) {
return (t[1] * 60 + t[2]) === secs;
});
}
console.log(getByNumSeconds(60)) // ["First Task",1,0]
要获得满足条件的数组,可以使用Array.prototype.filter
:
function filterSomeNumOfSecs(someNumOfSecs) {
return tasks
.filter(function(task) {
return (task[1]*60 + task[2]) === someNumOfSecs;
});
}
filterSomeNumOfSecs(5); => [["Third Task!",0,5]]
现在,如果你只想要任务的名称,你也可以使用Array.prototype.map
:
function mapSomeNumOfSecs(someNumOfSecs) {
return tasks
.filter(function(task) {
return (task[1]*60 + task[2]) === someNumOfSecs;
})
.map(function(task) {
return task[0];
});
}
mapSomeNumOfSecs(5); => ["Third Task!"]
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 是否可以使用JavaScript/AAJAX在客户端创建一个文件
- 是否可以仅通过jQuery将图像替换为用户动态选择的另一个图像
- 是否<asp:文本框>有一个onFocusLost事件
- 如何建立一个网页,检查我的路由器网络接口是否可以访问
- 是否可以创建一个带有进度条的跨浏览器AJAX照片上传器
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 调试一个简单的jQuery函数;想知道是否与其他代码冲突
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 如何检查一个字符串的所有字符是否都存在于另一个字符串中
- 尝试简化检查对象键是否为true并将其推送到另一个对象
- JQuery是否有一个“;移动“;作用或者有没有一种更紧凑的方法来做到这一点
- 检查 li 中的一个是否没有类
- 卡在检查两个复选框中的任何一个是否被选中
- 确定两个字符串中的一个是否是另一个StringJavascript的子字符串
- Jquery 选项卡.检查它们中的任何一个是否处于打开状态