Concat 对象不起作用,或者我需要将值转换为正确的格式
Concat objects is not working or I need to convert values to the right format?
我需要从第一个$.post
获得data.entities.paises
,并从第二个$.post
data.entities
concat()
,这就是我的做法:
var paisesFromEntity;
$.post(Routing.generate('productoGuardarPasoCinco'), $form.serialize(), 'json').done(function (data, textStatus, jqXHR) {
if (data.entities !== "undefined" || data.entities != "") {
paisesFromEntity = data.entities.paises;
}
}).fail(function () {
return false;
});
var returnList = function (entities) {
if (entities.length > 0) {
var items = [];
entities.forEach(function (value, index, array) {
items.push(value.pais);
});
return items.join(', ');
}
};
var fullList = [];
$.post(Routing.generate('agregarPaisesDistribuidor'), $form.serialize(), 'json').done(function (data, textStatus, jqXHR) {
fullList = fullList.concat(data.entities, JSON.stringify(paisesFromEntity));
var displayText = returnList(fullList);
$('#td-' + data.idToUpdate).html(displayText);
}).fail(function () {
return false;
});
将此输出作为第一$.post()
:
{
"success":true,
"entities":{
"id":13,
"nombre":"dsdsfsdfsd",
"direccion":"fsdfsdfsdf",
"telefono":"4234234",
"paises":[
"Bolivia",
"Costa Rica",
"Ecuador"
]
}
}
而这个为第二个$.post()
:
{
"success":true,
"entities":[
{
"pais":"Colombia"
},
{
"pais":"Panam'u00e1"
},
{
"pais":"Ciudad del Vaticano"
}
],
"idToUpdate":"14"
}
displayText
中的预期输出应该是这样的:Bolivia, Costa Rica, Ecuador, Colombia, Panam'u00e1, Ciudad del Vaticano
但我得到这个输出而不是Colombia, Panamá, Ciudad del Vaticano,
并且某些值缺少 data.entities.paises
中的值。我怀疑错误是data.entities.paises
与data.entities
格式不同,并且returnList
上的函数没有完成工作上帝,那么concat()
函数或data.entities.paises
格式的错误在哪里?如果是第二个,如何在连接两者之前转换为与data.entities
相同的格式?
您这里有 3 个问题。
首先,您可能会遇到时间问题,因为无法保证第一个$.post
会在第二个之前完成。您需要确保在入住前两者都已完成。您有几种方法可以做到这一点 - 链接,Caolan的异步库 https://github.com/caolan/async,检查的回调等 - 但这不是您在这里要问的。
问题是第一个响应是一个字符串数组;第二个是你想要其值的对象数组,你需要将它们组合在一起。
第三个问题是您将字符串数组转换为 JSON 字符串,这也不起作用。
试试这个。
// assuming data.entities is an array of objects, and paisesFromEntity is an array of strings
fullList = fullList.concat(paisesFromEntity, getValues(data.entities));
getValues()
功能
getValues = function(arr){
var ret = [], i;
for (i=0; i<arr.length; i++) {
ret.push(arr[i].pais);
}
return(ret);
};
如果你在jQuery中这样做,你可以使用
getValues = function(arr){
var ret = [];
$.each(arr,function(i,entry) {
ret.push(entry.pais);
});
return(ret);
};
如果您可以使用 lodash 或下划线,则使用弹拨会更容易。
- 将日期时间从json转换为可读格式
- 将日期和时间转换为UTC格式的日期-Javascript
- javascript/jquery将utc转换为短格式的本地时间
- 如何通过数据分组将json数据转换为嵌套的json数据格式
- 将Javascript日期转换为ASP.NET日期格式
- 如何在不在本地下载的情况下将url中提供的文件(pdf/doc)转换为json/string/base64格式
- 将数组转换为javascript格式的字符串
- 用javascript将epoch时间转换为可读格式
- 转换日期时间格式
- 在JavaScript中转换日期/时间格式
- javascript和jquery日期格式转换
- 用javascript将日期格式从d/m/yyyy转换为yyyy-mm-dd
- 将某个时间格式转换为日期对象
- 如何将日期转换为标准格式
- 将音频第二次转换为分钟和秒格式
- 如何将24小时的日期时间格式转换为12小时的格式
- 使用Javascript将MySQL日期格式转换为DD/MM/YY日期格式
- 如何访问特定列中的表单元格以转换格式
- 日期现在JavaScript转换格式
- 如何转换格式中的数字"hhmmss"使用javascript设置时间格式hh:mm:ss