比较数组时遇到麻烦

时间:2016-02-28 14:49:25

标签: javascript arrays angularjs

我在控制器中有&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。

2 个答案:

答案 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。