Sto leggendo RSS feed e spingendo sia il titolo che il link in un array in Jquery.
Quello che ho fatto è
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});
});
});
E sto leggendo di nuovo quell'array usando
$('#show').click(function(){
$.each(arr, function(index, value){
alert( index +' : '+value);
});
});
Ma mi dà Output come
1:[Object Object]
2:[Object Object]
3:[Object Object]
come questo ...
Come posso ottenere sia tile che link come coppia (titolo come chiave e link come valore)
Non ci sono chiavi negli array JavaScript. Usate gli oggetti per questo scopo.
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 );
});
In JavaScript, gli oggetti svolgono il ruolo degli array associativi. Siate consapevoli che gli oggetti non hanno un "ordine di ordinamento" definito quando li si itera (vedi sotto).
*Tuttavia, nel tuo caso non mi è molto chiaro perché trasferisci i dati dall'oggetto originale (data.news
). Perché non passi semplicemente un riferimento a quell'oggetto*?
Puoi combinare oggetti e array per ottenere un'iterazione prevedibile e un comportamento chiave/valore:
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 );
});
Questo codice
var title = news.title;
var link = news.link;
arr.push({title : link});
non sta facendo quello che pensate faccia. Ciò che viene spinto è un nuovo oggetto con un singolo membro chiamato "title" e con link
come valore ... il valore effettivo title
non viene usato.
Per salvare un oggetto con due campi devi fare qualcosa come
arr.push({title:title, link:link});
o con i recenti progressi di Javascript si può usare la scorciatoia
arr.push({title, link}); // Note: comma "," and not colon ":"
La cosa più vicina ad una tupla python sarebbe invece
arr.push([title, link]);
Una volta che avete i vostri oggetti o array nell'array arr
potete ottenere i valori sia come value.title
e value.link
o, nel caso della versione spinta dell'array, come value[0]
, value[1]
.