Estoy leyendo RSS feed y empujando tanto el Título como el Enlace en un Array en Jquery.
Lo que he hecho es
var arr = [];
$.getJSON("displayjson.php",function(data){
$.each(data.news, function(i,news){
var title = news.title;
var link = news.link;
arr.push({title : link});
});
});
Y vuelvo a leer ese array usando
$('#show').click(function(){
$.each(arr, function(index, value){
alert( index +' : '+value);
});
});
Pero me da Salida como
1:[Object Object]
2:[Object Object]
3:[Object Object]
como este ...
¿Cómo puedo obtener tanto tile y link como un par ( título como clave y enlace como valor)
No hay claves en las matrices de JavaScript. Utiliza objetos para ese fin.
var obj = {};
$.getJSON("displayjson.php",function (data) {
$.each(data.news, function (i, news) {
obj[news.title] = news.link;
});
});
// later:
$.each(obj, function (index, value) {
alert( index + ' : ' + value );
});
En JavaScript, los objetos cumplen el papel de las matrices asociativas. Tenga en cuenta que los objetos no tienen un "orden de clasificación" definido al iterarlas (véase más adelante).
*Sin embargo, en tu caso no me queda claro por qué transfieres los datos del objeto original (data.news
). ¿Por qué no pasas simplemente una referencia a ese* objeto?
Puedes combinar objetos y arrays para conseguir una iteración predecible y un comportamiento clave/valor:
var arr = [];
$.getJSON("displayjson.php",function (data) {
$.each(data.news, function (i, news) {
arr.push({
title: news.title,
link: news.link
});
});
});
// later:
$.each(arr, function (index, value) {
alert( value.title + ' : ' + value.link );
});
Este código
var title = news.title;
var link = news.link;
arr.push({title : link});
no está haciendo lo que crees que hace. Lo que se envía es un nuevo objeto con un solo miembro llamado "título" y con link
como valor... el valor real de title
no se utiliza.
Para guardar un objeto con dos campos tienes que hacer algo como
arr.push({title:title, link:link});
o con los recientes avances de Javascript puedes usar el atajo
arr.push({title, link}); // Note: comma "," and not colon ":"
Lo más parecido a una tupla en python sería en cambio
arr.push([title, link]);
Una vez que tienes tus objetos o arrays en el array arr
puedes obtener los valores como value.title
y value.link
o, en el caso de la versión del array empujado, como value[0]
, value[1]
.