Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JSON循环和提取值并推送到数组_Javascript_Angularjs_Arrays_Json - Fatal编程技术网

Javascript 从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

我有一个JSON文件,其中我需要访问它的一个值,这是一个包含许多键和值的对象,这些键和值是进一步的对象。像这样:

"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