Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS-在对象数组上使用.each方法_Javascript_Arrays_Typescript - Fatal编程技术网

Javascript JS-在对象数组上使用.each方法

Javascript JS-在对象数组上使用.each方法,javascript,arrays,typescript,Javascript,Arrays,Typescript,我需要知道是否可以在多维数组上使用array.each方法 我的数组如下所示: tabs=[ {label: string, icon: icon, routerLink: link}, {label: string, icon: icon, routerLink: link}, {label: string, icon: icon, routerLink: link}] 我需要知道标签中的每个标签是否与特定的标签不相等。 如果你能提供一个详细的答案,我将非常感激,因为我是一个新手程序员,想了

我需要知道是否可以在多维数组上使用array.each方法

我的数组如下所示:

tabs=[
{label: string, icon: icon, routerLink: link},
{label: string, icon: icon, routerLink: link},
{label: string, icon: icon, routerLink: link}]
我需要知道标签中的每个标签是否与特定的标签不相等。 如果你能提供一个详细的答案,我将非常感激,因为我是一个新手程序员,想了解我在做什么!但无论如何,请随意回答。:) 谢谢你

编辑:我正在使用此方法将选项卡添加到我的Tabmenu(ng2,Priming):

addTab(id:string){
如果(id==='linechart'){
this.tab={
标签:“NW详细信息”,
图标:“fa面积图”,
routerLink:['/nwdetails']
}
TABS.push(这个.tab);
}
如果(id=='piechart'){
this.tab={
标签:“IO详细信息”,
图标:“fa铅笔”,
路由器链接:['/iodetals']
}
TABS.push(this.tab)
}
}
tab是primeng提供的MenuItem[]类型,而tab是any

每次我双击一个图表,这个图表就会被调用,一个新的选项卡就会被推到我的菜单中。现在我想检查是否已经打开了带有特定标签的选项卡,以便它不会再次打开。 我尝试将for循环与if结合使用

for(i=0;i
但这会在每次不相等时打开一个新选项卡,因此如果有更多选项卡已打开,则实际上会在dblclick上打开多个选项卡。

您可以使用方法

tabls.every(function(v){
  return v.label !== someValue
})
检查

every方法对数组中的每个元素执行一次提供的回调函数,直到找到一个回调函数,其中回调函数返回falsy值(转换为布尔值时变为false)。如果找到这样的元素,则every方法立即返回false。否则,如果回调为所有元素返回true值,则every将返回true。回调仅对已赋值的数组索引调用;对已删除或从未赋值的索引不调用。
或者使用方法

检查

some()对数组中的每个元素执行一次回调函数,直到找到一个回调函数,其中回调函数返回一个truthy值(一个转换为布尔值时变为true的值)。如果找到这样的元素,some()立即返回true。否则,some()返回false。仅对已赋值的数组索引调用回调;对已删除或从未赋值的索引不调用回调


数组函数的签名如下所示:

Array.prototype.functionName=函数(回调){
for(var i=0;i
它需要一个返回布尔值的回调,即
true
false
(默认值)

每对一些 虽然两者都可以以类似的方式使用,但它们的使用方式应能传达正确的含义

vard=[1,2,3,4,5];
var valid=d.every(函数(num){return!isNaN(num);});

console.log(有效)
tabls.every((v)=>v.label!==someValue)
!tabls.some((v)=>v.label==someValue)
欢迎来到Stack Overflow!请阅读并了解我们对此处问题的期望。请注意,我们这里不提供从头开始的编码服务。请向我们展示您已经尝试过的内容、失败的原因以及我们可能提供的帮助。此外,您没有多维数组,但有一个对象数组。您能解释一下吗ES5版本:
tabs.every(函数(项){return item.label!==matchString})
您想过滤掉标签与给定字符串匹配的对象吗?感谢您的解释,对我来说效果很好。而且,更重要的是,我了解发生了什么。某些方法和每个方法在效率上有什么不同吗?它们看起来很相似,所以我猜没有。据我的理解,两者的性能都是一样的。区别在于,
array。有些
会在第一个真值时返回真值。
array。每个
会在第一个假值时返回假值。何时使用哪个?如果您的情况是所有元素都应该满足一定的条件,则使用每个。如果您的情况是任何一个值,则使用一些。@Faigjaz:两者都不同…………每个方法od会检查所有的返回值是否真实……有些人会检查其中任何一个是否真实
!tabls.some(function(v){
  return v.label === someValue
})