使用indexOf进行多源控制

时间:2017-03-16 13:28:24

标签: javascript angularjs indexof

这是我的第一个阵列:

kaos = [1,2,6,9,15,18,21];

这是第二个阵列:

zeus = [1,3];

我想在indexOf(1, 3)

的kaos中搜索搜索zeus

这是有效的:

kaos.indexOf(1)!=-1;

但这不起作用:

kaos.indexOf(1, 3)!=-1;

这也不起作用:

kaos.indexOf(1, 3, 9)!=-1;

我想搜索indexOf(1,3,7,vs),我该怎么办

2 个答案:

答案 0 :(得分:0)

您可以使用Array#map并迭代所需的项目,以检查kaos是否包含zeus元素。结果是一个带有布尔值的数组,反映了状态。

var kaos = [1, 2, 6, 9, 15, 18, 21],
    zeus = [1, 3],
    result = zeus.map(function (value) {
        return kaos.indexOf(value) !== -1;
    });

console.log(result);

真实世界的例子。

(我建议使用数组而不是字符串来保存数据。)

它将Array#filterArray#every结合使用,只有在元素的所有检查都返回true时才返回true

var $scope = { names: [{ prop_Name: 'Location 1', amenities: '1, 3, 5, 8, 11' }, { prop_Name: 'Location 2', amenities: '1, 3, 5, 8, 11' }, { prop_Name: 'Location 3', amenities: '1, 4, 14, 7, 11' }, { prop_Name: 'Location 4', amenities: '17, 3, 25, 8, 11' }, { prop_Name: 'Location 5', amenities: '2, 34, 50, 8, 11' }] },
    amenities = [3, 8],
    result = $scope.names.filter(function (n) {
        return amenities.every(function (a) {
            return n.amenities.split(', ').map(Number).indexOf(a) !== -1;
        });
    });

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

它也确保你找到独特的。

 var kaos = [1, 2, 6, 9, 15, 18, 21],
 zeus = [1, 15];
 zeus.every(function (element) {
 if (kaos.indexOf(element) > -1) {
     kaos.splice(kaos.indexOf(element), 1);
       return true;
 };