Javascript 返回AngularJS中两个数组值之间的匹配
我在返回两个数组元素之间的匹配数组时遇到问题,请提供帮助 这是我的密码Javascript 返回AngularJS中两个数组值之间的匹配,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我在返回两个数组元素之间的匹配数组时遇到问题,请提供帮助 这是我的密码 $scope.MacA = [ { name: '24:fd:52:c3:d8:35', sector: 'A23' }, { name: '56:db:30:4b:57:45', sector: 'It support' }, { name: 'b6:b6:76:6b:e9:00', sector: 'A24' }, { n
$scope.MacA = [
{
name: '24:fd:52:c3:d8:35',
sector: 'A23'
},
{
name: '56:db:30:4b:57:45',
sector: 'It support'
},
{
name: 'b6:b6:76:6b:e9:00',
sector: 'A24'
},
{
name: 'e8:74:e6:a1:14:16',
sector: 'Vodafone Guest'
},
{
name: 'dc:4a:3e:b7:32:0e',
sector: 'Direct HP officejet'
}
,
{
name: '7c:4c:a5:32:13:29',
sector: 'skyb7'
}
]
数组2是
scope.match = ['dc:4a:3e:b7:32:0e','7c:4c:a5:32:13:29' ];
这是一个函数,如果找到匹配项,它将返回匹配项
$scope.getList = function(){
// $scope.wifiList = WifiService.list();
var c = $scope.MacA;
var m = WifiService.list();
for(var i = 0;i < c.length;i++) {
for(var j = i;j < m.length;j++) { // Notice the j = i;
if (c[i].name === m[j]) {
$scope.result = c[i].sector;
// $scope.result = 'Its working';
break;
} else {
$scope.result = "Sorry!";
}
};
};
return $scope.result;
}
$scope.getList=function(){
//$scope.wifiList=WifiService.list();
var c=$scope.MacA;
var m=WifiService.list();
对于(变量i=0;i
您没有指定您想要的结果,但这里有一个可能的版本,用于查找匹配项
var result = [];
match.forEach(m => result.push(MacA.find(macA => macA.name === m)));
您没有指定您想要的结果,但是这里有一个查找匹配项的可能版本
var result = [];
match.forEach(m => result.push(MacA.find(macA => macA.name === m)));
因此,根据上面的代码,类似这样的内容:
$scope.getList = function(){
return $scope.result = $scope.MacA.filter(({name}) => $scope.match.includes(name)).map(({sector}) => sector)
}
因此,根据上面的代码,类似这样的内容:
$scope.getList = function(){
return $scope.result = $scope.MacA.filter(({name}) => $scope.match.includes(name)).map(({sector}) => sector)
}
我已经重构了你的一些代码
$scope.getList = function(){
var devices = $scope.MacA;
var macList = WifiService.list();
var results = devices.reduce((acc, device) => acc.concat(macList.find(current.name)? [current.sector]:[]), []);
return results.length? $scope.results = results : $scope.results = 'Sorry!';
}
我已经重构了你的一些代码
$scope.getList = function(){
var devices = $scope.MacA;
var macList = WifiService.list();
var results = devices.reduce((acc, device) => acc.concat(macList.find(current.name)? [current.sector]:[]), []);
return results.length? $scope.results = results : $scope.results = 'Sorry!';
}
您的代码有一条注释
//注意j=i代码>。我们应该注意到什么?这毫无意义c
比m
长得多,因此在本例中,如果i==3
,那么m[j]
将是m[3]
,这将是一个超出范围的索引。您可能希望内部循环中的j=0
,因为您希望内部循环将m
中的两个项与每个c
进行比较。此外,$scope.result
是一个字符串值,因此如果两个值都匹配,您将只得到最后一个评估的扇区
。您的代码有一条注释//请注意j=i代码>。我们应该注意到什么?这毫无意义c
比m
长得多,因此在本例中,如果i==3
,那么m[j]
将是m[3]
,这将是一个超出范围的索引。您可能希望在内部循环中使用j=0
,因为您希望内部循环将m
中的两个项与每个c
进行比较。此外,$scope.result
是一个字符串值,因此如果两个值都匹配,则只能得到最后一个值的扇区。