2015-08-09 33 views
0

當單擊HTML複選框時,我正在過濾JSON數組中的對象列表。我知道JavaScript array.sort()方法,但是如何根據複選框點擊消除項目?我需要一個事件監聽器嗎?JavaScript過濾器使用HTML表單的JSON對象

我的JSON看起來像這樣:

{ "lots" : [ 
    { 
    "name" : "Parking Lot Name", 
    "price" : 2, 
    "cash" : true, 
    "credit" : false, 
    "address" : "1234 W Main Ave", 
    "center" : { 
     "lat" : 67.659414, 
     "lng" : -137.414730 
    }... etc. 

所以,如果我已經得到了包括消除基於支付類型停車場複選框一種形式,我應該如何去實現呢?我讀過關於jQuery array.grep()函數,是嗎?

我的頁面正在使用JS循環像這樣建:

makeList(){ 
var self = this; 

self.jsonFile = $.ajax({ 
type: 'GET', 
url: 'assets/data/default.json', 
dataType: 'json', 
success: function(response) { 
    console.log(response); 
} 
}); 

self.jsonFile.done(function(data){ 
    //Sort low to high by default 
    data.lots.sort(function(a, b){ 
    return(a.price > b.price) 
    }); 

    for (var i = 0; i < data.lots.length; i++) { 
    document.getElementById('jsonList').innerHTML += 
     '<li> 
     <div id="text"> 
      <p class="price"> 
      $' + data.lots[i].price + '.00 
      </p> 
      <p class="info">' + 
      data.lots[i].address + 
     '</p> 
     </div> 
     <form method="get"> 
      <button type="submit" formaction="https://www.google.com/maps/dir/Current+Location/' + 
      data.lots[i].address + 
      '">Directions 
      </button> 
      <button type="submit" formaction="detail-view.html">Details 
      </button> 
     </form> 
     </li>'; 
    } 
}); 

}

+0

1. JSON是經由串序列化對象的方法。你沒有JSON,你有一個對象。 2.你的問題是什麼?你的輸入是什麼,你需要的輸出是什麼,以及觸發處理的是什麼? – Amit

+0

您的代碼中似乎有很多語法錯誤。字符串不能像OP中那樣分行多行。你是否試圖從* lot *數組中獲得具有「現金」或「信用」的對象爲真?似乎我*減少*或*過濾器*將完成這項工作。 – RobG

回答

0

可以消除這樣的: 你要綁定的onchange功能複選框,然後用下面的方式給功能

data = [{ 
     "name": "name", 
     "location1": "no", 
     "description": "description of services" 
     }, 
    { 
     "name": "name2", 
     "location1": "yes", 

     "description": "description of services2" 
     }, 
     { 
     "name": "name3", 
     "location1": "no", 

     "description": "description of services3" 
    } 
    ]; 

    b = $.grep(data, function(el, i) { 
    return el.location1.toLowerCase() === "yes" 
    }); 
0

你可以得到很多在付款方式是說「現金」使用:

var cashLots = data.lots.filter(function(lot){return lot.cash}); 

爲箭頭功能:

var cashLots = data.lots.filter(lot => lot.cash);