我正在处理这个以此为输入的脚本:
{
"success":true,
"entities":[
{
"pais":{
"id":2,
"nombre":"Bolivia"
}
},
{
"pais":{
"id":5,
"nombre":"Colombia"
}
},
{
"pais":{
"id":6,
"nombre":"Costa Rica"
}
}
],
"idToUpdate":"1"
}
并输出:玻利维亚,哥伦比亚,哥斯达黎加。以前面提到的输入示例为例,我称之为函数:
showList('#distTd-' + data.idToUpdate, paisesFromEntity, data.entities);
那很好,但我现在也得到了这个输入:
{
"success":true,
"entities":{
"id":5,
"nombre":"dgdfgdfg",
"direccion":"5654645",
"telefono":"656546",
"pais":[
{
"id":1,
"nombre":"Argentina"
},
{
"id":2,
"nombre":"Bolivia"
}
]
}
}
与第一个输入略有不同,因此本案例中的脚本无效,因为缺少pais
键。谁能帮助我骑这个?我无法更改返回新JSON的服务器端。
var fullList = [];
$(document).ready(function(){
var uniq = function (arr) {
var ids = {};
arr.forEach(function(obj) {
objPais = obj.pais.id === "undefined" ? obj.id : obj.pais.id;
ids[objPais] = obj;
});
return Object.keys(ids).map(function(id) {
return ids[id];
});
};
function showList(selector) {
var items = [].slice.call(arguments, 1).filter(function(item) { return item; }),
arr = fullList.concat.apply(fullList, items),
list = uniq(arr),
spans = list.map(function(val, i) {
return '<span id="' + val.pais.id +'">' + val.pais.nombre + '</span>';
});
if ($(selector).text().length >0) {
$(selector).append(', ');
}
$(selector).append(spans.join(', '));
}
$("#btn1").on("click", function(){
var arr1 = [{"pais":{"id":1,"nombre":"Country1"}},{"pais":{"id":2,"nombre":"Country2"}}],
arr2 = [{"pais":{"id":1,"nombre":"Country1"}},{"pais":{"id":3,"nombre":"Country3"}},{"pais":{"id":4,"nombre":"Country4"}}],
arr3 =[{"pais":[{"id":1,"nombre":"Argentina"},{"id":2,"nombre":"Bolivia"}]}];
showList('#update', arr1, undefined, arr2, arr3);
});
$("#btn2").on("click", function(){
var arr3 = [{"pais":{"id":5,"nombre":"Country5"}},{"pais":{"id":6,"nombre":"Country6"}}],
arr4 = [{"pais":{"id":7,"nombre":"Country7"}},{"pais":{"id":8,"nombre":"Country8"}}];
showList('#update', arr3, arr4);
});
});
Here是一个jsBin工作代码
答案 0 :(得分:1)
将第二种格式转换为第一种格式:
arr3copy = [];
for (var i = 0; i < arr3[0].pais.length; i++) {
arr3copy.push({"pais":{"id":arr3[0].pais[i].id,"nombre":arr3[0].pais[i].nombre}});
};
arr3 = arr3copy;