我从 Ajax 请求返回一个 JSON 对象,该请求输出以下键和值:
[{"App_Name":"Maccy D's","ID":2017},{"App_Name":"B King","ID":2011}]
我需要将此对象转换为 Javascript 数组,其中每个 App_Name
和 ID
值都连接为数组中的一个字符串。例如:
['Maccy D's 2017', 'B King 2011'] // etc...
我尝试过的是调用
var assetsArray = JSON.parse(assetJSON);
但是当我将 assetsArray
绑定(bind)到列表时,它会显示每个菜单项的 [object Object]
。而不是预期的 App_Name
+ ID
连接:
如何将 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/