Fai*_*jaz 5 javascript arrays typescript
我需要知道是否可以在多维数组上使用 array.every 方法。
我的数组如下所示:
tabs=[
{label: string, icon: icon, routerLink: link},
{label: string, icon: icon, routerLink: link},
{label: string, icon: icon, routerLink: link}]
Run Code Online (Sandbox Code Playgroud)
我需要知道选项卡内的每个标签是否不等于特定标签。如果您能提供详细的答案,我将非常感激,因为我是一名新手程序员,想了解我在做什么!但无论如何请随意回答。:) 到目前为止谢谢!
编辑:我正在使用此方法将选项卡添加到我的选项卡菜单(ng2,primeng):
tabs=[
{label: string, icon: icon, routerLink: link},
{label: string, icon: icon, routerLink: link},
{label: string, icon: icon, routerLink: link}]
Run Code Online (Sandbox Code Playgroud)
TABS 是 primeng 提供的 MenuItem[] 类型,而 tab 是任何类型。
每次我双击图表时,都会调用该图表,并将一个新选项卡推入我的菜单中。现在我想检查带有特定标签的选项卡是否已经打开,以便它不会再次打开。我尝试将 for 循环与 if 结合使用
addTab(id: string) {
if (id === 'linechart') {
this.tab = {
label: 'NW-Details',
icon: 'fa-area-chart',
routerLink: ['/nwdetails']
}
TABS.push(this.tab);
}
if (id === 'piechart') {
this.tab = {
label: 'IO-Details',
icon: 'fa-pencil',
routerLink: ['/iodetails']
}
TABS.push(this.tab)
}
}
Run Code Online (Sandbox Code Playgroud)
但这会在每次不相等时打开一个新选项卡,因此,如果已经打开了更多选项卡,则实际上会在 dblclick 上打开多个选项卡。
可以用Array#every方法。
tabls.every(function(v){
return v.label !== someValue
})
Run Code Online (Sandbox Code Playgroud)
检查MDN 文档:
every 方法对数组中存在的每个元素执行一次提供的回调函数,直到找到回调返回 false 值(转换为布尔值时变为 false 的值)的元素。如果找到这样的元素,则 every 方法立即返回 false。否则,如果回调为所有元素返回 true 值,则 every 将返回 true。仅对已分配值的数组索引调用回调;对于已被删除或从未被赋值的索引,不会调用它。
或使用Array#some方法
!tabls.some(function(v){
return v.label === someValue
})
Run Code Online (Sandbox Code Playgroud)
检查MDN 文档:
some() 对数组中存在的每个元素执行一次回调函数,直到找到回调返回 true 值(转换为布尔值时变为 true 的值)的元素。如果找到这样的元素,some() 立即返回 true。否则,some() 返回 false。仅对已分配值的数组索引调用回调;对于已被删除或从未被赋值的索引,不会调用它。
| 归档时间: |
|
| 查看次数: |
13527 次 |
| 最近记录: |