2016-10-11 3 views
0

그래서 D3에서 JSON 객체를로드하고 배열의 일부 열을 필터링하려고합니다. 내 유일한 문제는 그 일을 :Json의 배열 (JavaScript)에서 값 필터링

Object.attribute; 

내가 원하는 것을 반환하지 않습니다. 내 JSON 개체의 구조는 다음과 같습니다. 1000 개의 객체를 보유하고 있으며 각 배열은 내부에 속성을 보유합니다. 참조 용으로 내 데이터를 https://data.raleighnc.gov/resource/xce4-kemu.json에서 받고 있습니다.

내가이 "12"같은 개체의 실제 값을 반환

Object[0].attribute; 

할 경우. 어디에서 그 키가 존재하는지 모든 값을 반환하고자하는 경우

URL에서 JSON의 예를 볼 수 있습니다. 예를 들어, issueddate_mth, statelicnum 및 constcompletedofficial 속성 만있는 JSON을 반환하고 싶습니다. 내가 뭘하려의

발췌문은 다음과 같습니다

var raleigh_data = "https://data.raleighnc.gov/resource/xce4-kemu.json"; 
d3.json(raleigh_data, function(error, data) { 
var filtered_data = data.filter(function(d,i,e) { 
return d.issueddate_mth; 
}); 

}

+0

{ issueddate_mth: item.issueddate_mth, statelicnum: item.statelicnum, constcompletedofficial: item.constcompletedofficial } 대신 item을 밀어 수있는 그것의 1,000 개체가 아닌 1000 개 어레이는 데이터에서 필터링 할 일을 –

+1

의 배열? – Sajeetharan

+1

은 배열을 필터링하기 위해'var filteredArray = xxx.filter (callbackFunction)'와 같은 것을 사용합니다 (이 경우 배열은 xxx ...라는 이름의 var이고, 당신은'Object'라는 var을 사용하고 싶지 않습니다). .. callbackFunction은 3 개의 인수, 항목, 인덱스 및 전체 배열을 허용하는 함수입니다. 논리를 수행하고 true 또는 false를 반환하여 반환 된 새 배열에 항목을 포함/제외합니다. –

답변

3
var data = [your array of 1000 objects] 
var filteredData = []; 
data.forEach(function(item) { 
    if (item.issueddate_mth && item.statelicnum && item.constcompletedofficial) { 
     filteredData.push(item); 
    } 
}); 

이 당신은 지정된 속성이 원래의 배열에서 항목을 포함하는 배열을 얻을 것이다.

또한 나는이 세 가지 정당성 만 원한다면 100 % 확실하지 않습니다. 그렇다면, 당신은 쉽게 바로 forEach 콜백

+0

역으로 할 수있는 방법이 있습니까? JSON 객체에서 원하지 않는 속성을 제거한다는 의미입니까? – Kalimantan

+0

좋아, 내가 지정한 두 번째 부분을 시도하고 그것은 매력처럼 작동했습니다. 고맙습니다!! – Kalimantan