2017-03-17 51 views
0

我想用angularjs過濾mysql。JavaScript如果不是空元素添加函數返回

my fiddle

當您檢查電視按鈕,並點擊提交。 (電視按鈕值= 2)在設施列中找到2的angularjs過濾器。這是行得通的。但是當電視和有線電視檢查並點擊提交過濾器不起作用。因爲我的過濾器代碼不好。

$scope.am_en = function() 
 
{ 
 
$scope.ot_Filter = function (location) { 
 
return location.amenities.indexOf(1)==0; 
 
}; 
 
}

如何改變這一行的indexOf(1)

此得到一個值的indexOf(1)我想多值的indexOf( '1,7,9,11') Indexof可能是另一種方法?

HTML:

<input type="checkbox" name="more_filter[]" value="1" id="map-search-amenities-1" ng-checked="false"> 
 
<input type="checkbox" name="more_filter[]" value="2" id="map-search-amenities-2" ng-checked="false"> 
 
..vs 
 
<button id="more_filter_submit" ng-click="am_en();">Submit</button>

我嘗試這一點,但不工作:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
$scope.am_en = function(){ 
 
$scope.ot_Filter = function (location) { 
 
var xC = $(".hosting_amenities input:checkbox:checked").map(function(){return $(this).val();}).get(); 
 
var xxc = "["+xC+"]"; 
 
var k1 = xxc.indexOf(1)!==-1; 
 
var k2 = xxc.indexOf(2)!==-1; 
 
var k3 = xxc.indexOf(3)!==-1; 
 
... 
 

 
var zz1 = location.amenities.indexOf(1)==0; 
 
var zz2 = location.amenities.indexOf(2)==0; 
 
var zz3 = location.amenities.indexOf(3)==0; 
 
... 
 

 
return zz1 || zz2 || zz3 || ...; 
 
}; 
 
}

說明:

k1 == zz1 
 

 
k2 == zz2

我想: 如果K1等於true附加這句話的回報:|| ZZ1 如果元素是本附加返回OR元件

對於實施例1:

if (k1 == true) ? "k1":""; 
 

 
if (k2 == true) ? "|| k2 ":""; 
 

 
if (k3 == true) ? "|| k3 ":""; 
 

 
return k1 || k3;

對於實施例2:

k1 == false; 
 

 
k2 == true; 
 

 
k3 == true; 
 

 
k4 == true; 
 

 
return k2 || k3 || k4;

+1

我在這裏的印象,整個邏輯堆棧的反思將是有益的。任何時候你看到「這個,或者如果這個,或者如果那個,而不是另一個,那麼這個東西或其他的東西......」,你正在構建一個危險的脆弱和難以調試的卡片屋。通常情況下,通過對問題進行抽象,通常可以通過對數據結構進行反思或以邏輯步驟減少問題(通常通過處理指令(實現這一功能))來獲得更好的解決方案。 –

+1

我也不知道「不加結果」是什麼意思。 –

+0

我不想要返回 – toplumdusmani

回答

0

根據您迴應我的重述(是的,真正的),在這裏你去:

let rooms = [ 
{ name : 'Room1', amenities : '1,3' }, 
{ name : 'Room2', amenities : '2,4' }, 
{ name : 'Room3', amenities : '1,2,3' }, 
{ name : 'Room4', amenities : '2,3,4' } 
]; 

let amenities = [ 
    { id : '1', name : 'Amenity1' }, 
    { id : '2', name : 'Amenity2' }, 
    { id : '3', name : 'Amenity3' }, 
    { id : '4', name : 'Amenity4' }, 
    ]; 

function getAmenities (room) { 

    // Turn the room amenity ids into an array 
    let ids_array = room.amenities.split (','); 

    // Filter the amenities table to get the array of amenities for this room 
    return amenities.filter (x => { 
     return (ids_array.indexOf (x.id) !== -1); 
    }); 
} 

// Show amenities for a given room 
rooms.forEach (x => { console.log (getAmenities (x)) }) 
相關問題