在 AngularJS 中配对数组的相似对象



我在阵列中有一个名为routerList的路由器列表。我想在我的视图中的备份路由器旁边显示活动路由器。阵列中的路由器对象具有一个名为 HostName 的属性,该属性具有 locationID_Router#_RouterName,例如WA34_R01_ABCABC。阵列中的某个位置是另一个路由器,它是名为 WA34_R02_ABCABC 的路由器对。我想对阵列重新排序,以便当我使用 ng-repeat 这两个路由器时,所有其他匹配的路由器对将彼此相邻。我写了一个函数,它会告诉我名称是否相同,减去 1 个字符,所以 R01 和 R02。这里:

function stringCompare(word1, word2){
var differences = 0;
if(word1 != word2){
if(word1.length == word2.length){
for(i=0; i <= word1.length-1; i++){
if(word1.charAt(i) != word2.charAt(i)){
differences +=1;
}
}
}
}
if(differences == 1){
return true;
}else{
return false;
};
};

然后,我尝试在循环中有一个循环来获取对并将它们添加到一个新数组中,因为它找到了对,但我不断收到无法在循环中读取 HostName 的错误。

function findCouples(array){
var MatchedRouters = [];
for(i=0;i<=array.length-1;i++){
for(var i2=0;i2<=array.length-1;i2++){
if(stringCompare(array[i].HostName,array[i2].HostName)){
MatchedRouters.push(array[i]);
MatchedRouters.push(array[i2]);
}
}
}
return MatchedRouters
};

如果有更好的方法,请告诉我!如果没有任何帮助,你可以给我让它像这样工作将是惊人的。 谢谢!!

当您最初获取列表或路由器时,会创建您需要排序的属性。

像这样:

routers.forEach(function(router) {
router.location: getRouterLocation(router.HostName);
router.number: getRouterNumber(router.HostName);
router.name: getRouterName(router.HostName);
});

然后创建你的函数getRouterLocation,getRouterNumber等来解析你需要的值。

function getRouterLocation(hostName) {
return hostName.substring(0, hostName.indexOf('_');
}

最新更新