Je lis le flux RSS et j'envoie le titre et le lien dans un tableau en Jquery.
Ce que j'ai fait est
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});
});
});
Et je relis ce tableau en utilisant
$('#show').click(function(){
$.each(arr, function(index, value){
alert( index +' : '+value);
});
});
Mais cela me donne Sortie comme
1:[Object Object]
2:[Object Object]
3:[Object Object]
comme ceci ...
Comment puis-je obtenir titre et lien par paire (titre comme clé et lien comme valeur) ?
Il n'y a pas de clés dans les tableaux JavaScript. Utilisez des objets à cette 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, les objets remplissent le rôle des tableaux associatifs. Sachez que les objets n'ont pas d'ordre de tri défini lorsqu'ils sont itérés (voir ci-dessous).
*Cependant, dans votre cas, je ne comprends pas très bien pourquoi vous transférez les données de l'objet original (data.news
). Pourquoi ne pas simplement passer une référence à cet* objet ?
Vous pouvez combiner des objets et des tableaux pour obtenir une itération prévisible et un comportement clé/valeur :
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 );
});
Ce code
var title = news.title;
var link = news.link;
arr.push({title : link});
ne fait pas ce que vous pensez qu'il fait. Ce qui est poussé est un nouvel objet avec un seul membre nommé "title" ; et avec link
comme valeur ... la valeur réelle de title
n'est pas utilisée.
Pour sauvegarder un objet avec deux champs, vous devez faire quelque chose comme
arr.push({title:title, link:link});
ou avec les récents progrès de Javascript, vous pouvez utiliser le raccourci
arr.push({title, link}); // Note: comma "," and not colon ":"
Ce qui se rapproche le plus d'un tuple python serait plutôt
arr.push([title, link]);
Une fois que vous avez vos objets ou tableaux dans le tableau arr
, vous pouvez obtenir les valeurs soit comme value.title
et value.link
ou, dans le cas de la version poussée du tableau, comme value[0]
, value[1]
.