2011-01-28 2 views
58

나는 RSS 피드을 읽고 Jquery에 배열로 제목과 링크를 모두 푸시합니다. 내가 무슨 짓을Jquery에서 키와 값을 모두 배열로 푸는 방법

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}); 
       });      
      }); 

내가 다시

$('#show').click(function(){ 
       $.each(arr, function(index, value){ 
        alert(index +' : '+value); 
       }); 
      }); 

을 사용하여 해당 배열을 읽고있다 그러나이 같은

1:[Object Object] 
2:[Object Object] 
3:[Object Object] 

로 나에게 출력주기 ...

내가 자바 스크립트 배열에서 어떤 키가 없습니다 (값 같은 키와 제목과 링크) 한 쌍 등 모두 타일링크

답변

124

을 얻을 수있는 방법. 그 목적을 위해 사물을 사용하십시오.

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); 
}); 

JavaScript에서는 객체가 연관 배열의 역할을 수행합니다. 객체는 반복 할 때 정의 된 "정렬 순서"를 갖지 않습니다 (아래 참조).

귀하의 경우에는 원래 개체 (data.news)에서 데이터를 전송하는 이유가 분명하지 않습니다. 왜이 주위에있는 에 대한 참조를 전달하지 않는 이유는 무엇입니까? 당신은 배열에를 밀어 하지 않은

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); 
}); 
8
arr[title] = link; 

, 당신은 설정하는 :


당신은 객체와 배열은 예측 가능한 반복 키/값 동작을 달성하기 위해 결합 할 수 있습니다 키가 title이고 값이 link 인 요소 따라서 배열은 객체 여야합니다.

20

이 코드

var title = news.title; 
var link = news.link; 
arr.push({title : link}); 

은 당신이하지 무슨 생각을하고 있지 않습니다. 푸시 된 것은 하나의 멤버가 "title"이고 값이 link 인 새 객체입니다. 실제 title 값은 사용되지 않습니다. 는 최근 자바 스크립트와

arr.push({title:title, link:link}); 

또는 파이썬 튜플에 가장 가까운 것은 대신

될 것이라고 바로 가기

arr.push({title, link}); // Note: comma "," and not colon ":" 

을 사용할 수 있습니다 전진처럼 뭔가를해야 두 개의 필드와 객체를 저장하려면

arr.push([title, link]); 

arr 배열에 개체 또는 배열을 가져 오면 value.titlevalue.link 또는 푸시 된 배열 버전의 경우 value[0], value[1]으로 표시됩니다.

2

당신이 의미가 있습니다

var unEnumeratedArray = []; 
var wtfObject = { 
       key : 'val', 
       0  : (undefined = 'Look, I\'m defined'), 
       'new' : 'keyword', 
       '{!}' : 'use bracket syntax', 
       '  ': '8 spaces' 
       }; 

for(var key in wtfObject){ 
    unEnumeratedArray[key] = wtfObject[key]; 
} 
console.log('HAS KEYS PER VALUE NOW:', unEnumeratedArray, unEnumeratedArray[0], 
      unEnumeratedArray.key, unEnumeratedArray['new'], 
      unEnumeratedArray['{!}'], unEnumeratedArray['  ']); 

당신은 같은 개체에 대한 열거를 설정할 수 있습니다 ({})[0] = 'txt';과 같은 배열의 키를 설정할 수 있습니다 ([])['myKey'] = 'myVal';

희망이 도움이 :)

11

개체를 정의한 다음 배열을 밀어 넣어야한다고 생각합니다.

var obj = {}; 
obj[name] = val; 
ary.push(obj); 
관련 문제