过滤json数组的Javascript对象

过滤json数组的Javascript对象,javascript,jquery,json,Javascript,Jquery,Json,我在HTML表单中有多个复选框。当我单击一个按钮时,选中的值被放入一个JavaScript对象中,并触发一个过滤函数 this.filterChkbx.on('click', function() { _this.checkedFilter.push({ filterEl: this.value }); }); 在filter函数中,我提取一个json文件 $.ajax("ajax/search-test-data.json") .done(function (

我在HTML表单中有多个复选框。当我单击一个按钮时,选中的值被放入一个JavaScript对象中,并触发一个过滤函数

this.filterChkbx.on('click', function() {
    _this.checkedFilter.push({
        filterEl: this.value
    });
});
在filter函数中,我提取一个json文件

$.ajax("ajax/search-test-data.json")
.done(function (data){
    ...
现在我想显示与表单中的值匹配的对象。这就是我的json的样子:

{
"searchtest" : [
  {
    "id" : "001",
    "section": "Hochschule",
    "group": "Professoren",
    "location": "Kaiserslautern",
    "date": "HS 2015/11",
    "description" : "Lorem ipsum dolor sit amet",
    "details" : "VZ",
    "deadline" : "27.12.2015",
    "topic" : "Lorem"
  },

  {
    "id" : "002",
这是我的表格:

<form class="filterThisResults" action="ajax/search-test-data.json" method="GET">

    <ul class="filter-list">
        <button type="reset">Filter löschen</button>

        <div class="search-filter-section">
            <li>
                <h2>Bereich</h2>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="section" value="Hochschule">
                <label for="check1">Hochschule</label>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="section" value="Angewandte Ingenierwissenschaften">
                <label for="check2">Angewandte Ingenierwissenschaften</label>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="section" value="Bauen & Gestalten">
                <label for="check3">Bauen & Gestalten</label>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="section" value="BWL">
                <label for="check4">BWL</label>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="section" value="Informatik">
                <label for="check5">Informatik</label>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="section" value="Logistik">
                <label for="check6">Logistik</label>
            </li>
        </div>

        <div class="search-filter-group">
            <li>
                <h2>Gruppen</h2>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="group" value="Professoren">
                <label for="check1">Professoren</label>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="group" value="Studenten">
                <label for="check2">Studenten</label>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="group" value="Angestellte">
                <label for="check3">Angestellte</label>
            </li>
        </div>

        <div class="search-filter-location">
            <li>
                <h2>Standort</h2>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="location" value="Kaiserslautern">
                <label for="check1">Kaiserslautern</label>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="location" value="Pirmasens">
                <label for="check2">Pirmasens</label>
            </li>

            <li>
                <input class="filterCheckbx" type="checkbox" name="location" value="Zweibrücken">
                <label for="check3">Zweibrücken</label>
            </li>
        </div>

        <div class="search-filter-topic">
            <li>
                <h2>Thema</h2>
            </li>

            <li>    
                <select class="filterCheckbx" id="topic" name="topic" size="3">
                    <option value="Lorem">Lorem</option>
                    <option value="Ipsum">Ipsum</option>
                    <option value="Dolor">Dolor</option>
                </select>   
            </li>
        </div>

        <li>
            <button class="submit-filter" type="submit">Ergebnisse anzeigen</button>
        <li>
    </ul>   
</form>

    过滤löschen
  • 贝雷希
  • 霍克舒勒
  • Angewandte Ingenierwissenschaften
  • 鲍恩和盖斯泰尔滕
  • BWL
  • 信息学
  • 罗吉斯蒂克
  • 格鲁本
  • 教授
  • 学生
  • 安格斯特尔特
  • 立场
  • 凯瑟斯劳滕
  • 皮尔马森斯
  • 兹韦布吕肯
  • 西玛
  • 洛勒姆 乱数假文 多洛
  • 麦角尼斯
通过json检查哪些项目是正确的方法是什么。当选择表单部分中的多个项目时,结果会放大

: 创建一个新数组,其中包含通过所提供函数实现的测试的所有元素

: 测试数组中的某些元素是否通过所提供函数实现的测试


这更像是伪代码,因为您可能需要根据变量的作用域/类型稍微调整变量(
checkFilter
data
)。

而是在对象中推送值,为什么不尝试使用jQuery的“序列化”对象属性呢

尝试将所有表单数据存储在单个字符串中,然后使用文件管理器和一些方法来匹配这些值

function showValues() {
    var str = $( "form" ).serialize();
    console.log(str);
  }
$('[type=reset]').on("click",function(e){
 showValues();
  event.preventDefault();
})

for循环的可能副本将非常巨大,我已经为测试实现了它。工作-但是干净漂亮看起来有点不一样^^^看起来很整洁!尝试实现它,并在几个小时内给你反馈!提前谢谢!哇,这是直截了当的!工作非常简单,谢谢你的解释!祝你有个好的日伴
function showValues() {
    var str = $( "form" ).serialize();
    console.log(str);
  }
$('[type=reset]').on("click",function(e){
 showValues();
  event.preventDefault();
})