Javascript 从JSON循环和提取值并推送到数组
我有一个JSON文件,其中我需要访问它的一个值,这是一个包含许多键和值的对象,这些键和值是进一步的对象。像这样:Javascript 从JSON循环和提取值并推送到数组,javascript,angularjs,arrays,json,Javascript,Angularjs,Arrays,Json,我有一个JSON文件,其中我需要访问它的一个值,这是一个包含许多键和值的对象,这些键和值是进一步的对象。像这样: "lineChart": { "Fri Jul 28, 2017": { "renewalFee_EUR": 1165, "extensionFee_EUR": 0, "renewalFee_USD": 5941.5, "extensionFee_USD": 0, "processingFee_U
"lineChart": {
"Fri Jul 28, 2017": {
"renewalFee_EUR": 1165,
"extensionFee_EUR": 0,
"renewalFee_USD": 5941.5,
"extensionFee_USD": 0,
"processingFee_USD": 25,
"expressFee_USD": 0,
"urgentFee_USD": 0,
"latePayPenalty_USD": 0,
"fxRate": 5.1,
"subTotal_USD": 5966.5
},
"Tue Aug 1, 2017": {
"renewalFee_EUR": 1165,
"extensionFee_EUR": 0,
"renewalFee_USD": 2411.55,
"extensionFee_USD": 0,
"processingFee_USD": 25,
"expressFee_USD": 0,
"urgentFee_USD": 0,
"latePayPenalty_USD": 0,
"fxRate": 2.07,
"subTotal_USD": 2436.55
}
}
我已经能够将键值(即2017年7月28日星期五)存储在一个数组中,该数组用于将数据传递给视图中的图表。这部分工作正常
var caLine = vm.graph.lineChart;
// THIS STORES THE RETURNED VALUE(GRAPH DATA) FROM A REST REQUEST
//IN MY ROUTER FOLDER (USING ANGULARJS)
lineLabelArr = [];
for (var prop in caLine) {
if (caLine.hasOwnProperty(prop)) {
lineLabelArr.push(prop)
}
}
vm.labels = lineLabelArr; //VM.LABELS IS UED TO BIND DATA TO THE CHART'S DIRECTIVES
我只需要JSON文件中的subTotal\u USD
下的数据在我的图表中显示为数据
问题
如何循环查看lineChart
对象中的每个属性,从subTotal\u USD
键中提取值,并将其存储在一个数组中,以便在图表中显示数据?我觉得这比需要的更复杂。for(var I=0;Ifor(var i = 0; i < caLine.length; i++) {
var datObj = caLine[i];
if (datObj != null) {
var subTotoalUSD = datObj["subTotal_USD"];
}
}
var datObj=卡林[i];
如果(datObj!=null){
var Subtoalusd=datObj[“小计美元”];
}
}
您已经有了一组键,可以使用
forEach
、map
、reduce
等循环使用这些键
您可以使用map
从键数组中创建一个新数组:
const lineChart={“2017年7月28日星期五”:{续期费欧元:1165,延期费欧元:0,续期费美元:5941.5,延期费美元:0,处理费美元:25,快递费美元:0,急件费美元:0,滞纳金美元:0,汇率:5.1,小计美元:5966.5},“2017年8月1日星期二”:{续费欧元:1165,延期费欧元:0,续费美元:2411.55,延期费美元:0,处理费美元:25,快递费美元:0,急件费美元:0,滞纳金美元:0,汇率:2.07,小计美元:2436.55};
常量lineLabelArr=[];
用于(线形图中的var prop){
if(折线图hasOwnProperty(prop)){
线标签后推(支柱)
}
}
console.log(
lineLabelArr.map(键=>lineChart[key]。小计(美元)
)
您可以在循环中为…使用?类似于lineLabelArr.map(prop=>caLine[prop]。小计_USD
)?您可以使用angular.forEach谢谢。@user3297291就是这个。我之前确实尝试过,但它返回时没有定义,但现在可以使用了。如果您想留下答案,我很乐意接受,很高兴我能提供帮助。我在答案中写下了一行,并添加了一个不同的方法作为奖励。再次感谢您。非常详细和有用的经验lanation+示例感谢您的帮助,尽管它只能是caLine.length