2014-06-10 62 views
0

我有這樣自定義過濾,NG-重複

[ 
    { 
     "itemId": 1062, 
     "businessType": "SPORT", 
     "name": "Modern Martial Arts Vitor Shaolin Brazilian Jiu Jitsu", 
     "websiteUrl": "http://www.yelp.com/biz/modern-martial-arts-vitor-shaolin-brazilian-jiu-jitsu-new-york", 
     "rating": 5, 
     "city": "New York", 
     "address": "780 8th Ave (b/t 47th St & 48th St) Hell's Kitchen New York NY 10036", 
     "imageUrl": "http://s3-media3.ak.yelpcdn.com/bphoto/JHk9p_jYX1QpQN4Im-p3jA/ms.jpg", 
     "source": "Yelp", 
     "longitude" : -42.005, 
     "latitude" : 65.007, 
     "itemType": "Business", 
     "suggestionCriteria": "like", 
     "suggestedBy": "Self", 
     "suggestingUser": { 
      "userId": 1, 
      "firstName": "Gaurav", 
      "lastName": "Shandilya", 
      "imageUrl": "http://54.243.29.6:8080/UploadedImages/1_1401692790212_Ashish" 
     } 
    }, 
    { 
     "itemId": 8227, 
     "businessType": "SPORT", 
     "name": "TGA of Bergen County", 
     "websiteUrl": "http://www.golftga.com/Default.aspx?alias=www.golftga.com/bergencounty", 
     "city": "Wayne", 
     "address": "17 North Jersey Lane Wayne NJ 07470 USA", 
     "source": "Groupon", 
     "longitude" : -42.005, 
     "latitude" : 65.007, 
     "itemType": "Business", 
     "suggestionCriteria": "like", 
     "suggestedBy": "Self", 
     "suggestingUser": { 
      "userId": 1, 
      "firstName": "Gaurav", 
      "lastName": "Shandilya", 
      "imageUrl": "http://54.243.29.6:8080/UploadedImages/1_1401692790212_Ashish" 
     } 
    }, 
    { 
     "itemId": 3932, 
     "businessType": "SPORT", 
     "name": "Willowbrook Golf Center", 
     "websiteUrl": "http://www.willowbrookgolfcenter.com", 
     "city": "North Jersey", 
     "address": "17 North Jersey Lane Wayne NJ 07470 USA", 
     "source": "Groupon", 
     "longitude" : -42.005, 
     "latitude" : 65.007, 
     "itemType": "Business", 
     "suggestionCriteria": "like", 
     "suggestedBy": "Self", 
     "suggestingUser": { 
      "userId": 1, 
      "firstName": "Gaurav", 
      "lastName": "Shandilya", 
      "imageUrl": "http://54.243.29.6:8080/UploadedImages/1_1401692790212_Ashish" 
     } 
    }, 
    { 
     "itemId": 3918, 
     "businessType": "SPORT", 
     "name": "Church Street Boxing Gym & Pouncing Tigers", 
     "websiteUrl": "http://www.csboxinggym.com/", 
     "city": "New York City", 
     "address": "201207 West 42nd Street New York NY 10036 USA", 
     "source": "Groupon", 
     "itemType": "Business", 
     "suggestionCriteria": "like", 
     "suggestedBy": "Self", 
     "suggestingUser": { 
      "userId": 1, 
      "firstName": "Gaurav", 
      "lastName": "Shandilya", 
      "imageUrl": "http://54.243.29.6:8080/UploadedImages/1_1401692790212_Ashish" 
     } 
    }, 
    { 
     "itemId": 1100, 
     "businessType": "SPORT", 
     "name": "CKO Kickboxing Carroll Gardens", 
     "websiteUrl": "http://www.yelp.com/biz/cko-kickboxing-carroll-gardens-brooklyn-2", 
     "rating": 4, 
     "city": "Brooklyn", 
     "address": "562 Court St (b/t Hamilton Ave & Garnet St) Carroll Gardens Brooklyn NY 11231", 
     "imageUrl": "http://s3-media2.ak.yelpcdn.com/bphoto/guwuh08U_tYTyRsjLQIJ-w/ms.jpg", 
     "source": "Yelp", 
     "itemType": "Business", 
     "suggestionCriteria": "like", 
     "suggestedBy": "Self", 
     "suggestingUser": { 
      "userId": 1, 
      "firstName": "Gaurav", 
      "lastName": "Shandilya", 
      "imageUrl": "http://54.243.29.6:8080/UploadedImages/1_1401692790212_Ashish" 
     } 
    }, 
    { 
     "itemId": 462, 
     "businessType": "SPORT", 
     "name": "TITLE Boxing Club", 
     "websiteUrl": "http://www.titleboxingclub.com", 
     "city": "Wayne", 
     "address": "Wayne NJ 07470 USA", 
     "source": "Groupon", 
     "itemType": "Business", 
     "suggestionCriteria": "like", 
     "suggestedBy": "Self", 
     "suggestingUser": { 
      "userId": 1, 
      "firstName": "Gaurav", 
      "lastName": "Shandilya", 
      "imageUrl": "http://54.243.29.6:8080/UploadedImages/1_1401692790212_Ashish" 
     } 
    }, 
    { 
     "itemId": 474, 
     "businessType": "SPORT", 
     "name": "Centercourt Athletic Club of Morristown", 
     "websiteUrl": "http://www.centercourtclub.com/club/scripts/section/section.asp?CLNK=1&NS=CMT", 
     "city": "Wayne", 
     "address": "Wayne NJ 07470 USA", 
     "source": "Groupon", 
     "itemType": "Business", 
     "suggestionCriteria": "like", 
     "suggestedBy": "Self", 
     "suggestingUser": { 
      "userId": 1, 
      "firstName": "Gaurav", 
      "lastName": "Shandilya", 
      "imageUrl": "http://54.243.29.6:8080/UploadedImages/1_1401692790212_Ashish" 
     } 
    }, 
    { 
     "itemId": 3326, 
     "businessType": "SPORT", 
     "name": "Legends Baseball Instruction", 
     "websiteUrl": "http://www.legendsbaseballinstruction.com", 
     "city": "North Jersey", 
     "address": "17 North Jersey Lane Wayne NJ 07470 USA", 
     "source": "Groupon", 
     "itemType": "Business", 
     "suggestionCriteria": "like", 
     "suggestedBy": "Self", 
     "suggestingUser": { 
      "userId": 1, 
      "firstName": "Gaurav", 
      "lastName": "Shandilya", 
      "imageUrl": "http://54.243.29.6:8080/UploadedImages/1_1401692790212_Ashish" 
     } 
    }, 
    { 
     "itemId": 1104, 
     "businessType": "SPORT", 
     "name": "Adirondack Sailing", 
     "websiteUrl": "http://www.yelp.com/biz/adirondack-sailing-new-york", 
     "rating": 4, 
     "city": "New York", 
     "address": "62 Chelsea Piers New York NY 10011", 
     "imageUrl": "http://s3-media1.ak.yelpcdn.com/bphoto/FwpUOlPWSpLlEteBGukcpg/ms.jpg", 
     "source": "Yelp", 
     "itemType": "Business", 
     "suggestionCriteria": "like", 
     "suggestedBy": "Friend", 
     "suggestingUser": { 
      "userId": 4, 
      "firstName": "Ashish", 
      "lastName": "Chandra", 
      "imageUrl": "http://54.243.29.6:8080/UploadedImages/4_1400934645640_Ashish" 
     } 
    }, 
    { 
     "itemId": 1709, 
     "businessType": "SPORT", 
     "name": "Manhattan Sailing Club", 
     "websiteUrl": "http://www.yelp.com/biz/manhattan-sailing-club-new-york", 
     "rating": 4, 
     "city": "New York", 
     "address": "385 S End Ave Ste 6H Battery Park New York NY 10280", 
     "imageUrl": "http://s3-media1.ak.yelpcdn.com/bphoto/9yvzeSYaKfguvDUzF69xvw/ms.jpg", 
     "source": "Yelp", 
     "itemType": "Business", 
     "suggestionCriteria": "like", 
     "suggestedBy": "Friend", 
     "suggestingUser": { 
      "userId": 4, 
      "firstName": "Ashish", 
      "lastName": "Chandra", 
      "imageUrl": "http://54.243.29.6:8080/UploadedImages/4_1400934645640_Ashish" 
     } 
    } 
] 

一個JSON我顯示此列表中的吳重複的幫助。我想製作一個自定義過濾器,用戶可以根據他的當前位置,價格,評分和建議的自我或frd的距離(如果長和有距離)過濾列表 請幫我找到解決方案

這是Plunker link

+0

你已經做了,建立一個自定義過濾器,然後將其應用到列表 –

+0

這就是我想知道如何讓自定義過濾器這麼多屬性? –

+1

首先發布你已經擁有的jsbin或jsfiddle,它可以讓你更容易地添加代碼,而不必複製你的代碼並開始新的代碼。其次是那些複合過濾器,這意味着如果用戶開始按價格過濾,然後通過評分獲得集合,那麼預期結果是按價格和評級過濾還是觸發新搜索? – forthehackofit

回答

0

您可以使用一個函數作爲filter的第一個參數,用於更復雜的過濾器。例如,您可以在控制器中指定:

$scope.filterFn = function (o) { 
     return (o.price > 10) && ((o.longitude - user.longitude) < 2) && (o.itemType === 'Business'); 
    } 

您的過濾器函數將接收當前列表項作爲其第一個參數。如果返回true,則過濾的列表將包含當前項目。

見:https://docs.angularjs.org/api/ng/filter/filterexpression參數作爲函數)的詳細信息

+0

感謝您的答覆。你可以請編輯我的沉重的評級過濾器 –