簡體   English   中英

AngularJS中的SQL IN語句相當於什么?

[英]What's the equivalent of a SQL IN statement in AngularJS?

我是AngularJS的新手,我想弄清楚如何在記錄ID是數組ID列表之一的情況下應用過濾器。 在SQL中,它將類似於:

SELECT * from Table1 where Table1.ID in (1,2,3,4,5)

我將如何在AngularJS中完成同一件事? 我知道我需要應用過濾器,但是如何?

如果您正在尋找一種控制器/服務方法,該方法將從數組中過濾掉某些記錄,則可以使用普通的javascript。 在這里,我使用數組實現的filter()方法,更多詳細信息在這里

var data = [1,2,3,4,5,6,7,8,9];
var inStatementData = [3,6,7];

function isInArray(value, array) {
  return array.indexOf(value) > -1;
}

var resultArray= data.filter(function(value){
    return isInArray(value, inStatementData);
});

 //resultArray will be [3,6,7]

您可以結合使用filtersome來使用純Javascript來實現。

例:

let a = [{id: 1, val: 'aaa'},
         {id: 2, val: 'bbb'},
         {id: 3, val: 'ccc'},
         {id: 4, val: 'ddd'},
         {id: 5, val: 'eee'},
         {id: 6, val: 'fff'},
         {id: 7, val: 'ggg'},
         {id: 8, val: 'hhh'}];

let b = [1,2,5,6];

let result = a.filter(x => b.some(y => y === x.id));

結果(字符串化):

[{"id":1,"val":"aaa"},{"id":2,"val":"bbb"},{"id":5,"val":"eee"},{"id":6,"val":"fff"}]

在ES5中,您應該編寫:

var result = a.filter(function(x) { return b.some(function(y) { return y === x.id; }); });

在過濾器中使用ng-repeat

JS中的SQL對象:

$scope.results = [
   { id: 1, name: 'tom', job: 'doctor' },
   { id: 2, name: 'bob', job: 'dentist' },
   { id: 3, name: 'steve', job: 'teacher' }

HTML:

<div ng-repeat="result in results | filter: { id: 1} | filter: { id: 2}">
<span>{{result.name}}</span>
<span>{{result.job}}</span>
</div>

您還可以使用角度功能使其更清潔:

JS:

$scope.idFilter = function (result) { 
var myArray = [ 1, 2, 3, 4, 5 ];
if($.inArray(result, myArray) !== -1){
      return result;
   }
};

HTML:

<div ng-repeat="result in results | filter: idFilter">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM