Eu estou lendo RSS feed e empurrando tanto o Título como o Link para um Array em **Jquery***.
O que eu fiz foi
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 estou lendo essa matriz novamente usando
$('#show').click(function(){
$.each(arr, function(index, value){
alert( index +' : '+value);
});
});
Mas isso Dá-me* Saída** como
1:[Object Object]
2:[Object Object]
3:[Object Object]
assim...
Como posso obter tanto a tela como o link como um par ( título como chave e link como valor)
Não há chaves em arrays JavaScript. Use objetos para esse fim.
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 );
});
No JavaScript, os objetos cumprem o papel de matrizes associativas. Tenha em conta que os objectos não têm um " definido; ordene " ao iterá-los (ver abaixo).
**No entanto**, no seu caso não está realmente claro para mim porque você transfere dados do objeto original (data.news
) de forma alguma. Por que você não simplesmente passa uma referência ao objeto that* por aí?
Você pode combinar objetos e matrizes para alcançar iteração previsível e comportamento chave/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});
não está a fazer o que você pensa que faz. O que é empurrado é um novo objeto com um único membro chamado "title" e com link
como o valor ... o valor real title
não é utilizado.
Para salvar um objeto com dois campos, você tem que fazer algo como
arr.push({title:title, link:link});
ou com os recentes avanços do Javascript você pode usar o atalho
arr.push({title, link}); // Note: comma "," and not colon ":"
A coisa mais próxima de um tuple python seria
arr.push([title, link]);
Uma vez que você tenha seus objetos ou arrays no array arr
você pode obter os valores como value.title
e value.link
ou, no caso da versão do array empurrado, como value[0]
, value[1]
.