2017-04-06 145 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);