我在控制器中有&shared; check.checkedFacility' 范围数组,其内容如下:
[14, 49, 93, 122, 44, 40, 88, 83, 65, 9, 38, 28, 8, 53, 125, 155]
我正在动态生成前端的二维数组,例如,来自&strong; shared.facilities [$ parent。$ index] '的单维数组。读起来像
{"0":56,"1":13,"2":49,"3":3,"4":11,"5":7,"6":19,"7":4,"8":9,"9":131,"10":21}
现在我在ng-show参数中比较这两个数组,如
containsAny(shared.checkedFacility,shared.facilities[$index])
函数定义就像
function containsAny(source, target) {
console.log("contains called");
var result = source.filter(function(item) {
return target.indexOf(item) > -1
});
return (result.length > 0);
}
但有些函数如何返回true或false,如何使其工作?
请自救我,因为我在Angular或Javascript Env中直接来自PHP。
答案 0 :(得分:0)
您可以使用Object.keys()
,.map()
从shared.facilities[$parent.$index]
// `shared.checkedFacility`
var checkedFacility = [14
, 49
, 93
, 122
, 44
, 40
, 88
, 83
, 65
, 9
, 38
, 28
, 8
, 53
, 125
, 155
];
// shared.facilities[$parent.$index]
var facilities = {
"0": 56,
"1": 13,
"2": 49,
"3": 3,
"4": 11,
"5": 7,
"6": 19,
"7": 4,
"8": 9,
"9": 131,
"10": 21
};
// create an array having values contained in `facilities`
var arr = Object.keys(facilities).map(function(prop, index) {
return facilities[prop]
});
console.log(arr)
function containsAny(source, target) {
console.log("contains called");
var result = source.filter(function(item) {
return target.indexOf(item) > -1
});
return (result.length > 0);
}
// pass `arr` as second parameter to `containsAny`
var res = containsAny(checkedFacility, arr);
console.log(res)

答案 1 :(得分:0)
您的功能失败:
target.indexOf(item)
因为您示例中的目标是对象而不是数组,因此您无法调用 indexOf 函数。
所以你最有可能得到:
未捕获的TypeError:target.indexOf不是函数
要解决此问题,您必须将数组作为目标传递,而不是传递Object。