javascript - 如何按键将 JSON 对象转换为 Javascript 数组过滤器?

标签 javascript jquery arrays json ajax

我从 Ajax 请求返回一个 JSON 对象,该请求输出以下键和值:

[{"App_Name":"Maccy D's","ID":2017},{"App_Name":"B King","ID":2011}]

我需要将此对象转换为 Javascript 数组,其中每个 App_NameID 值都连接为数组中的一个字符串。例如:

['Maccy D's 2017', 'B King 2011'] // etc...

我尝试过的是调用

var assetsArray = JSON.parse(assetJSON);

但是当我将 assetsArray 绑定(bind)到列表时,它会显示每个菜单项的 [object Object] 。而不是预期的 App_Name + ID 连接:

enter image description here

如何将 JSON 对象转换为按键过滤的 Javascript 数组?

这是我将返回的 JSON 绑定(bind)到菜单列表的方式:

Ajax 请求:

    //call an Ajax GET for the asset name data
    $.ajax({
        url: asset_list_request_url,
        cache: false,
        success: function(assetJSON){
            bindAssetNamesMenu(assetJSON);
        }
    });

映射函数:

    function bindAssetNamesMenu(assetJSON)
    {

        var assetsArray = JSON.parse(assetJSON);

        $.each(assetsArray, function(i)
        {
            var li = $('<li/>')
            .addClass('ui-menu-item')
            .attr('role', 'menuitem')
            .appendTo(assetMenu);


            var a = $('<a>')
                 .addClass('ui-all')
                 .appendTo(li);

            var input = $('<input/>')
                  .addClass('ui-all')
                  .attr('type', 'checkbox')
                  .appendTo(a);


            var span = $('<span>')
                  .text(assetsArray[i])
                  .appendTo(a);


        });

    }

最佳答案

您可以使用map()将对象数组转换为您需要的格式的数组:

var data = [{"App_Name":"Maccy D's","ID":2017},{"App_Name":"B King","ID":2011}]
var arr = data.map(function(obj) {
    return obj.App_Name + ' ' + obj.ID;
})

console.log(arr);

或者,您可以按原样使用对象数组,如下所示:

$.ajax({
    url: asset_list_request_url,
    cache: false,
    dataType: 'json',
    success: bindAssetNamesMenu
});

function bindAssetNamesMenu(arr) {
    $.each(arr, function() {
        var $li = $('<li/>').addClass('ui-menu-item').attr('role', 'menuitem').appendTo(assetMenu);
        var $a = $('<a>').addClass('ui-all').appendTo($li);
        var $input = $('<input/>').addClass('ui-all').attr('type', 'checkbox').appendTo($a);
        var $span = $('<span>').text(this.App_Name + ' ' + this.ID).appendTo($a);
    });
}

关于javascript - 如何按键将 JSON 对象转换为 Javascript 数组过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38997121/

相关文章:

javascript - 正则表达式与我期望的不匹配

javascript - 无法加载带有数据的选项卡式页面

javascript - 隐藏敏感内容的正确方法?

php - 在屏幕上回显 MySQL 列值

Java 数组列表引用

c# - 可以对某些数组进行排序但不能对其他数组进行排序?

javascript - 使用javascript访问浏览器的页面缩放控件

javascript - 如何在 nodemon 中隐藏黄色的 console.logs

javascript - 如何在循环内使用 jQuery when 函数?

jquery - 使用 ember.js 和 ember easyform 包装 bootstrap/jquery 小部件