2016-09-09 5 views
1

이 문제는 내가 겪고있는 문제이므로 나와 잘 이해하지 못할 수도 있습니다.배열 및 객체 조작

값 배열과 두 개의 문자열이 있습니다 : 예 :

["5", "6"] 
"DEPOT_NAME", 
"DEPOT_ID" 
I는 (이 예에서는 하나만 있지만, 복수 가능) 오브젝트의 배열을

:

[ 
{ 
    columns: [ 
    {name: "DEPOT_ID"}, 
    {name: "DEPOT_NAME"}, 
    {name; "REGION_ID"}, 
    {name: "CREATED_DATE"}, 
    {name: "MODIFIED_DATE"} 
    ], 
    id: 1, 
    rows: [ 
    {data: {DEPOT_ID: "0", DEPOT_NAME: "London", REGION_ID: "0", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}}, 
    {data: {DEPOT_ID: "1", DEPOT_NAME: "Abbey Road", REGION_ID: "1", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}}, 
    {data: {DEPOT_ID: "3", DEPOT_NAME: "Romford", REGION_ID: "3", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}}, 
    {data: {DEPOT_ID: "5", DEPOT_NAME: "Bristol", REGION_ID: "5", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}}, 
    {data: {DEPOT_ID: "6", DEPOT_NAME: "Croydon", REGION_ID: "6", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}} 
    ], 
    title: "Depots" 
} 
] 

를 I 내가 DEPOT_NAME 키 값을 얻을 필요가있는 값을 사용하여 그 올바른 DEPOT_ID 값에 해당합니다. 위의 배열을 사용하여 올바른 저장소 ID를 찾을 수 있지만 저장소 이름의 값을 얻으려면 어떻게해야합니까?

내가 설명해줬으면 좋겠다. 더 명확히 해두면 더 명확하게하기 위해 최선을 다할 것이다.

감사의 말을 전하면됩니다.

감사합니다.

+0

Depot_Id 권한을 사용하여 Depot_Name을 가져 오시겠습니까? – Abhijeet

+0

시나리오에 필요한 입력 및 최종 출력을 제공하여 예제를 설명 할 수 있습니까? – Abhijeet

+0

기본적으로 배열 [ "5", "6"]을 사용하여 [ "Bristol", "Croydon"] 값을 얻고 싶습니다. 올바른 저장소 ID를 찾은 다음 저장소 이름의 값을 얻으십시오. 더 이해가 되니? – BeeNag

답변

1

사용자는 객체를 반복하여 원하는 필터링 있었다 목표 값만 얻으십시오.

function getValues(key, values, target) { 
 
    return data[0].rows. 
 
     filter(a => values.indexOf(a.data[key]) !== -1). 
 
     map(a => a.data[target]); 
 
} 
 

 
var data = [{ columns: [{ name: "DEPOT_ID" }, { name: "DEPOT_NAME" }, { name: "REGION_ID" }, { name: "CREATED_DATE" }, { name: "MODIFIED_DATE" }], id: 1, rows: [{ data: { DEPOT_ID: "0", DEPOT_NAME: "London", REGION_ID: "0", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03" } }, { data: { DEPOT_ID: "1", DEPOT_NAME: "Abbey Road", REGION_ID: "1", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03" } }, { data: { DEPOT_ID: "3", DEPOT_NAME: "Romford", REGION_ID: "3", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03" } }, { data: { DEPOT_ID: "5", DEPOT_NAME: "Bristol", REGION_ID: "5", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03" } }, { data: { DEPOT_ID: "6", DEPOT_NAME: "Croydon", REGION_ID: "6", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03" } }], title: "Depots" }]; 
 

 
console.log(getValues("DEPOT_ID", ["5", "6"], "DEPOT_NAME"));

function getValues(key, values, target) { 
 
    return data[0].rows.filter(function (a) { 
 
     return values.indexOf(a.data[key]) !== -1; 
 
    }).map(function (a) { return a.data[target]; }); 
 
} 
 

 
var data = [{ columns: [{ name: "DEPOT_ID" }, { name: "DEPOT_NAME" }, { name: "REGION_ID" }, { name: "CREATED_DATE" }, { name: "MODIFIED_DATE" }], id: 1, rows: [{ data: { DEPOT_ID: "0", DEPOT_NAME: "London", REGION_ID: "0", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03" } }, { data: { DEPOT_ID: "1", DEPOT_NAME: "Abbey Road", REGION_ID: "1", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03" } }, { data: { DEPOT_ID: "3", DEPOT_NAME: "Romford", REGION_ID: "3", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03" } }, { data: { DEPOT_ID: "5", DEPOT_NAME: "Bristol", REGION_ID: "5", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03" } }, { data: { DEPOT_ID: "6", DEPOT_NAME: "Croydon", REGION_ID: "6", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03" } }], title: "Depots" }]; 
 

 
console.log(getValues("DEPOT_ID", ["5", "6"], "DEPOT_NAME"));

ES6

+2

멋지고 깨끗한 해결책 – Benjamin

+0

대단히 감사합니다! – BeeNag

1

이 예에서는 소자 "브리스톨"및 "크로"배열을 생성한다 (와 ID의 배열에 기초하여 [5,6])

// your example object 

var yourObj = [ 
{ 
    columns: [ 
    {name: "DEPOT_ID"}, 
    {name: "DEPOT_NAME"}, 
    {name: "REGION_ID"}, 
    {name: "CREATED_DATE"}, 
    {name: "MODIFIED_DATE"} 
    ], 
    id: 1, 
    rows: [ 
    {data: {DEPOT_ID: "0", DEPOT_NAME: "London", REGION_ID: "0", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}}, 
    {data: {DEPOT_ID: "1", DEPOT_NAME: "Abbey Road", REGION_ID: "1", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}}, 
    {data: {DEPOT_ID: "3", DEPOT_NAME: "Romford", REGION_ID: "3", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}}, 
    {data: {DEPOT_ID: "5", DEPOT_NAME: "Bristol", REGION_ID: "5", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}}, 
    {data: {DEPOT_ID: "6", DEPOT_NAME: "Croydon", REGION_ID: "6", CREATED_DATE: "2016-05-03", MODIFIED_DATE: "2016-05-03"}} 
    ], 
    title: "Depots" 
} 
]; 

// example code to fetch the depot names based on ids 

var ids = [5, 6]; 
var depotNames = []; 
for(var i = 0; i<yourObj.length; i++){ 
    var rows = yourObj[i].rows; 
    for(var j =0; j < rows.length; j++){ 
    for(id in ids){ 
     if(rows[j].data.DEPOT_ID == ids[id]){ 
      depotNames.push(rows[j].data.DEPOT_NAME); 
     } 
    } 

    } 
} 
0
function fetchData(cols, ids, mainArray) { 
    var data = []; 
    for(var i=0;i < mainArray.length; i++) { 
     for(var c =0;c<mainArray[i].rows.length;c++) { 

     for(var id in ids) { 
      if(mainArray[i].rows[c].data.DEPOT_ID == ids[id]) { 
       var temp = {}; 
       for(col in cols) { 
        temp[cols[col]] = mainArray[i].rows[c].data[cols[col]]; 
       }   
       data.push(temp); 
      } 
     } 
     } 
    } 

    return data; 
} 

용도 : fetchData ([ "DEPOT_NAME", "DEPOT_ID"], [ "5", " 6 "], YourArray);