【问题标题】:Slimmer way to transfer results from an Ajax-Request to an array将结果从 Ajax 请求传输到数组的更简洁的方法
【发布时间】:2017-06-22 07:28:22
【问题描述】:

我目前有这种情况。我收到了这样的 AJAX 调用的响应

...responseJSON.d.results : [
    {
        "Title" : "SomeTitle",
        "Id" : 1
    },
    {
        "Title" : "SomeOtherTitle",
        "Id"    : 2
    }
]

现在我想检查我的 DOM 中的选项并检查值属性是否是请求中我的 Id 的一部分。通常我会通过

创建一个包含所有ID的数组
var ids = [];
$.each(response.JSON.d.results, function(){
    ids.push(this.Id)
});

之后,如果在数组中找不到属性,我将遍历选项并删除它们

$.each($('option.someClass'), function(){
    if(ids.indexOf(parseInt($(this).attr('value'))) === -1) $(this).remove()
});

但是我发现这有点不雅。我想知道是否有更苗条的方法可以做到这一点。非常感谢您的帮助。

【问题讨论】:

    标签: javascript jquery arrays json ajax


    【解决方案1】:

    要从数组中获取 ID,可以使用Array#map

    var ids = response.JSON.d.results.map(o => o.Id);
    

    这将包含数组中的所有 ID。

    现在,要删除那些value 不在上述数组中的<option>s,您可以从数组中创建一个选择器。

    $('option.someClass')
        .not('option[value="' + ids.join('"].someClass, option[value="') + '"].someClass')
        .remove();
    

    字符串连接和数组连接会给出格式的选择器

    "option[value="1"].someClass, option[value="2"].someClass, option[value="3"].someClass"
    

    可以直接和jQuery一起使用。

    var arr = [{
      "Title": "SomeTitle",
      "Id": 1
    }, {
      "Title": "SomeOtherTitle",
      "Id": 2
    }];
    
    var ids = arr.map(o => o.Id);
    $('option.someClass')
      .not('option[value="' + ids.join('"].someClass, option[value="') + '"].someClass')
      .remove();
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <select>
    <option value="1" class="someClass">1</option>
    <option value="2" class="someClass">2</option>
    <option value="3" class="someClass">3</option>
    <option value="4" class="someClass">4</option>
    <option value="5" class="someClass">5</option>
    </select>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-06
      • 2023-03-06
      • 1970-01-01
      • 2021-08-21
      • 2017-10-04
      • 2011-04-23
      • 2013-07-26
      • 1970-01-01
      相关资源
      最近更新 更多