2017-04-06 140 views
0

HII我是新來的JavaScript我有一個網絡請求和JSON格式的給予迴應服務器JSON響應值,任務是,我需要的數據解析成數組如何遍歷從在JavaScript

這裏是我的樣品的回覆:

"Employee" : { 
    "Employee_Names" : [ 
    { 
     "BAR_RATING" : "0", 
     "Name" : "anand", 
     "Name" : "0", 
     "PATTERN" : "Ln", 

    }, 
    { 
     "BAR_RATING" : "0", 
     "Name" : "av", 
     "Name_RATING" : "0", 
     "PATTERN" : "FiLi", 

    }, 
    { 
     "BAR_RATING" : "0", 
     "Name" : "books", 
     "Name_RATING" : "0", 
     "PATTERN" : "Ln", 

    }, 
    { 
     "BAR_RATING" : "0", 
     "Name" : "kanagalu", 
     "Name_RATING" : "0", 
     "PATTERN" : null, 

    }, 
    { 
     "BAR_RATING" : "0", 
     "Name" : "specialty-av", 
     "Name_RATING" : "0", 
     "PATTERN" : "Fn-Ln", 

    } 
    ], 
    "FOUND_Name" : [ null ], 
    "OTHER_Name" : [ 
    { 
     "BAR_RATING" : "0", 
     "Name" : "kindle-cs-support", 
     "Name_RATING" : "0", 
     "PATTERN" : null, 

    }, 
    { 
     "BAR_RATING" : "0", 
     "Name" : "noreply-ops-jobs", 
     "Name_RATING" : "0", 
     "PATTERN" : null, 

    } 
    ], 
    "PERSONAL_Name" : [ null ], 
    "PROJECTED_Name" : [ 
    { 
     "BAR_RATING" : "0", 
     "Name" : "anand.venkatesan", 
     "Name_RATING" : "0", 
     "PATTERN" : "Fn.Ln", 

    }, 
    { 
     "BAR_RATING" : "0", 
     "Name" : "anandv", 
     "Name_RATING" : "0", 
     "PATTERN" : "FnLi", 

    }, 
    { 
     "BAR_RATING" : "0", 
     "Name" : "vanand", 
     "Name_RATING" : "0", 
     "PATTERN" : "LiFn", 

    } 
    ] 
    }, 

我需要的是我從Employee_Names需要對象我希望所有的名稱在一個陣列同樣從OTHER_NAME我希望所有的名字存儲在陣列

我DONO如何解析與動態數組大小的數據

+1

你永遠不應該這樣做somethig像' 「PERSONAL_NAME」:[空]'做'而不是 「PERSONAL_NAME」:[]' – loelsonk

+0

顯示應該如何看預期的結果 – RomanPerekhrest

回答

1

使用Array map()方法來獲得所有從對象的數組中的特定屬性值到一個單一的陣列。

要從Employee_Names取所有的名字到一個單一的陣列:

var empNames = employee.Employee_Names.map(function(item) { 
    return item.Name; 
    }); 

爲了所有的名字提取到從OTHER_NAME一個單個陣列:

var otherNames = employee.OTHER_Name.map(function(item) { 
    return item.Name; 
    }); 

工作演示

var employee = { 
 
    "Employee_Names" : [ 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "anand", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : "Ln", 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "av", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : "FiLi", 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "books", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : "Ln", 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "kanagalu", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : null, 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "specialty-av", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : "Fn-Ln", 
 

 
    } 
 
    ], 
 
    "FOUND_Name" : [ null ], 
 
    "OTHER_Name" : [ 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "kindle-cs-support", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : null, 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "noreply-ops-jobs", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : null, 
 

 
    } 
 
    ] 
 
    }; 
 
    
 
    var empNames = employee.Employee_Names.map(function(item) { 
 
    return item.Name; 
 
    }); 
 
    
 
    var otherNames = employee.OTHER_Name.map(function(item) { 
 
    return item.Name; 
 
    }); 
 
    
 
    console.log("Employee Names", empNames); 
 
    console.log("Other Names", otherNames);

2

要獲得在字段「名稱」的所有值從Employee.Employee_Names陣列

var resultArray = Employee.Employee_Names.map(function(a) {return a.Name;}); 

resultArray於是將 ["anand", "av", "books", "kanagalu", "specialty-av"]

+0

最優化的單行代碼。 – Krishna9960

+0

@ Krishna9960作爲ES6的一部分,您可以使用胖箭頭功能對其進行優化,請參閱我的答案。 – loelsonk

+0

@loelsonk:同意。 – Krishna9960

2

如果我正確地理解了你,這應該適合你的需求。

我們循環訪問"Employee_Names"對象。

// ES6 code  
var allNames = employee["Employee_Names"].map(bar => bar.Name); 

// pure javascript 
var allNames = []; 
for (i = 0; i < employee["Employee_Names"].length; i++) { 
    var element = employee["Employee_Names"][i]; 

    // We push only name 
    allNames.push(element.Name); 

    // We push full json object 
    //allNames.push(element); 
} 

現在我們爲我們的allNames數組指定新的json密鑰。

employee = Object.assign(employee, { "NEW_NAMES" : allNames }); 

檢查工作〔實施例:

var employee = { 
 
    "Employee_Names" : [ 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "anand", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : "Ln", 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "av", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : "FiLi", 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "books", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : "Ln", 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "kanagalu", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : null, 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "specialty-av", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : "Fn-Ln", 
 

 
    } 
 
    ], 
 
    "FOUND_Name" : [ ], 
 
    "OTHER_Name" : [ 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "kindle-cs-support", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : null, 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "noreply-ops-jobs", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : null, 
 

 
    } 
 
    ], 
 
    "PERSONAL_Name" : [ ], 
 
    "PROJECTED_Name" : [ 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "anand.venkatesan", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : "Fn.Ln", 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "anandv", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : "FnLi", 
 

 
    }, 
 
    { 
 
     "BAR_RATING" : "0", 
 
     "Name" : "vanand", 
 
     "Name_RATING" : "0", 
 
     "PATTERN" : "LiFn", 
 

 
    } 
 
    ] 
 
    }; 
 

 

 
// ES6 
 
//var allNames = employee["Employee_Names"].map(bar => bar.Name); 
 

 
// pure javascript 
 
var allNames = []; 
 
for (i = 0; i < employee["Employee_Names"].length; i++) { 
 
    var element = employee["Employee_Names"][i]; 
 

 
    // We push only name 
 
    allNames.push(element.Name); 
 
    
 
    // We push full json object 
 
    //allNames.push(element); 
 
} 
 

 
// Now we assign new json key with our names 
 
employee = Object.assign(employee, { "NEW_NAMES" : allNames }); 
 

 
// Our new employee json 
 
console.log(employee);