【发布时间】:2020-10-22 09:37:40
【问题描述】:
我正在处理一个包含多个网络接口的对象,其中接口的名称作为键,然后接口的信息作为值:
我想做的是一个 Vue.js 计算属性,以通过键过滤此对象并创建包含所有 GigabitEthernet 的数组,例如,以便我可以在我的模板中对其进行迭代。
我考虑过使用正则表达式,这是我使用并匹配我想放入单独数组中的接口:
const regex = /^(Te|GigabitEthernet|FastEthernet)+\s?([0-9]+\/){0,}[0-9]+$/g;
问题是从 API 接收的主要对象不是数组,所以我不能在它上面使用 find() 或 filter() 函数...
如果有人有任何想法,那就太好了,谢谢!
编辑:
尝试 Jaromanda 的解决方案后:
它只返回 2 行中的 1 行...
代码如下:
const regex = /^(Ten|GigabitEthernet|FastEthernet)\d+[/]?[\d+]?[/]?[\d+]?[.]?[\d+]?[/]?[\d+]?[/]?[\d+]?[:]?[\d+]?$/g;
var rslt = {};
Object.fromEntries(
Object.entries(this.cmdResult).filter(([key, value]) => {
if (regex.test(key)) {
rslt[key] = value;
}
})
);
return rslt;
这是左侧当前输出和右侧预期输出的屏幕截图:
编辑 2:
当我使用关联键控制台记录正则表达式结果时会发生以下情况:
如您所见,只有 2 个是正确的......
【问题讨论】:
-
使用
Object.fromEntries(Object.entries(object).filter(([key, value]) => your code to filter)) -
哇,这正是我所需要的,谢谢!
-
它可以工作,但只有 1 个问题,它只返回 2 行中的 1 行,你能检查我的编辑吗?
-
什么意思它只返回 2 行中的 1 行?
标签: javascript vue.js