【问题标题】:How to determine if a record with a specific value exists in an array from a MSSQL api call using javascript如何使用javascript从MSSQL api调用确定数组中是否存在具有特定值的记录
【发布时间】:2021-01-01 09:09:38
【问题描述】:

如果这太简单了或者之前已经回答过一百万次,我们深表歉意。我似乎无法理解我一直在阅读的其他问答主题。

我正在尝试确定如何确定一个数组是否在所有行的其中一个字段中具有特定值。换句话说,我只想让它询问任何行中是否有 1 的“preQualTypeID”,如果没有,我让它隐藏模式的一部分。

这里是模态的 HTML 代码:

<div class="modal fade hide" id="preQualModal" tabindex="-1" role="dialog" aria-labelledby="preQualsModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h3 class="modal-title" id="preQualsModalLabel">
                    <i class="fas fa-graduation-cap"></i>
                    <span>Prerequisite Qualifications</span>
                </h3>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <div class="col-12">
                    <div class="d-none" id="preQual_AccedemicDetails">
                        <div class="row pt-1 pb-3">
                            <div id="preQual_Academic">@*API data goes here*@</div>
                        </div>
                    </div>
                    <div class="d-none" id="preQual_AccessDetails">
                        <div class="row pt-1 pb-3">
                            <div id="preQual_Access">@*API data goes here*@</div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>

这是我正在尝试实现的 Javascript:

$(function () {
    $('#preQualModal').modal({
        keyboard: true,
        backdrop: "static",
        show: false
        
    }).on('show.bs.modal', function () {
        var url = "/api/PreQualViewData/";
        var qualId = $(event.target).closest('td').data('id');

        $.get(url + qualId, function (data) {
        
            var accedemicExist = data.some(function (data) { data.preQualTypeID === 1 });
            
            if (accedemicExist == true) {
                $('#preQual_AccedemicDetails').removeClass('d-none');
            };
            
        });
    });
});

我无法工作的主要事情是这一点:

var accExist = data.some(function (data) { data.preQualTypeID === 1 });

它总是导致“错误”,我猜这是我的语法问题。当我调试时,它说“data.preQualTypeID”是未定义的,所以我猜我做错了,但我不知道从哪里开始。我在 Javascript 方面没有经验,我觉得这种语言有点混乱。

API 是由一个 ASP 控制器构建的,看起来像这样(我删除了一些细节以便于阅读):

[{"qualification":"Graduate Management Training Scheme","level":7,"preQualTypeID":2},
{"qualification":"Degree","level":6,"preQualTypeID":1},
{"qualification":"A Levels","level":3,"preQualTypeID":1},
{"qualification":"GCSEs","level":2,"preQualTypeID":1}]

如果有人能指出我正确的方向,我将非常感激。将更新实施并投票赞成那些有帮助的人。

谢谢

如果我需要提供更多信息,请告诉我。

【问题讨论】:

    标签: javascript jquery arrays api


    【解决方案1】:

    您可以使用filter 来检查从ajax 后端接收的数据 是否有preQualTypeID = 1,这取决于removeClass

    演示代码

    var data = [{
        "qualification": "Graduate Management Training Scheme",
        "level": 7,
        "preQualTypeID": 2
      },
      {
        "qualification": "Degree",
        "level": 6,
        "preQualTypeID": 1
      },
      {
        "qualification": "A Levels",
        "level": 3,
        "preQualTypeID": 1
      },
      {
        "qualification": "GCSEs",
        "level": 2,
        "preQualTypeID": 1
      }
    ];
    //filter json aray 
    var accedemicExist = $(data)
      .filter(function(i, n) {
        return n.preQualTypeID === 1; //check if prequaltypeid=1
      });
    //if length > 0 exist 
    if (accedemicExist.length > 0) {
      console.log("it exist do something")
      //do something
    } else {
    
      console.log("not there sorry")
    }
    &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"&gt;&lt;/script&gt;

    【讨论】:

    • 谢谢你,它工作得很好。我将更新我的问题以展示我是如何实现它的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2011-05-14
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多