javascript 如果不为空元素添加函数 return

javascript if not empty element add function return

我想要过滤器 mysql 和 angularjs。

my fiddle

当您选中电视按钮并单击提交时。 (电视按钮值 = 2)angularjs 在便利设施栏中过滤找到 2。这是工作。但是当电视和有线电视检查并单击提交过滤器时不起作用。因为我的过滤代码不好。

$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 添加此短语 return :|| zz1 如果该元素存在,请添加 return 或元素

例如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;

根据您对我重述的回复(是的,是的),您可以:

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 ) ) } )