Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 将每个动态创建的数组中的第一项添加到一起_Javascript_Arrays - Fatal编程技术网

Javascript 将每个动态创建的数组中的第一项添加到一起

Javascript 将每个动态创建的数组中的第一项添加到一起,javascript,arrays,Javascript,Arrays,以下是我的数据结构 { "questions": ["Large choice of food", "Food quality", "Food freshness"], "countries": ["Netherlands", "Belgium", "France"], "values": [ [ [5, 88, 18], [50, 83, 10], [29, 78, 80]

以下是我的数据结构

{
    "questions": ["Large choice of food", "Food quality", "Food freshness"],
    "countries": ["Netherlands", "Belgium", "France"],
    "values": [
        [
            [5, 88, 18],
            [50, 83, 10],
            [29, 78, 80]
        ],

        [
            [46, 51, 61],
            [95, 21, 15],
            [49, 86, 43]
        ],
        [
            [7, 46, 92],
            [54, 94, 31],
            [89, 96, 11]
        ]
    ]
}
这是我的排序脚本

 function calculateTotals() {
    var countryS = "France"
    var country = data.countries.indexOf(countryS);
    var values

  for (var question= 0; question < data.questions.length; question++) {
  // get the values for the question/country
  values = data.values[question][country];

  console.log(values)
函数calculateTotals(){
var countryS=“法国”
var country=数据.countries.indexOf(countries);
var值
对于(变量问题=0;问题
目前,这会将其输出到控制台

因此,目前该脚本正在记录每个问题的值,这些值按国家索引

我想把这个数组中的每一项相加

29+49+89

78+86+96

80+43+11

我不知道该怎么做

我认为也许使用.pop()/.shift()三次可能有效,或者只使用[0]、[1]、[2]。但是,在返回数组中的单个项后,我不确定如何将这三个数组的数字相加

希望一切都清楚,任何帮助/建议都将不胜感激

您可以使用数组函数对它们进行迭代并执行这样的操作

例如

为了更简单,但不推荐,您也可以通过

var arr = [[29,49,89], [78,86,96], [80,43,11]];

var final = arr.map(function(v){
    return eval(v.join('+'));
});

console.log(final); //[167, 260, 134]
尝试更新的

下面是更新的方法

  function calculateTotals() 
  {
    var countryS = "France"
    var country = data.countries.indexOf(countryS);
    var sum = [0,0,0];

    for (var question= 0; question < data.questions.length; question++) 
    {
      var values = data.values[question][country];
      for( var counter = 0; counter < values.length; counter++ )
      {
        sum[counter] += values[counter];
      }
    }
    document.body.innerHTML += sum;
  }
函数calculateTotals()
{
var countryS=“法国”
var country=数据.countries.indexOf(countries);
var总和=[0,0,0];
对于(变量问题=0;问题
演示

var数据={
“问题”:[“食品选择多”、“食品质量”、“食品新鲜度”],
“国家”:[“荷兰”、“比利时”、“法国”],
“价值观”:[
[
[5, 88, 18],
[50, 83, 10],
[29, 78, 80]
],
[
[46, 51, 61],
[95, 21, 15],
[49, 86, 43]
],
[
[7, 46, 92],
[54, 94, 31],
[89, 96, 11]
]
]
}
函数calculateTotals(){
var countryS=“法国”
var country=数据.countries.indexOf(countries);
var总和=[0,0,0];
对于(变量问题=0;问题calculateTotals();
您可以使用数组求和,也可以迭代项

基本上,这项建议使用了

方法对每个数组元素执行一次提供的函数

函数calculateTotals(){
var countryS=“法国”,
国家=数据.countries.indexOf(国家),
总和=[];
data.values.forEach(函数(问题){
问题[国家].forEach(职能(a,i){
和[i]=(和[i]| 0)+a;
});
});
控制台日志(总和);
}
var数据={“问题”:[“大量食品选择”、“食品质量”、“食品新鲜度”],“国家”:[“荷兰”、“比利时”、“法国”],“价值”:[[5,88,18],[50,83,10],[29,78,80],[46,51,61],[95,21,15],[49,86,43],[7,46,92],[54,94,31],[89,96,11]];

calculateTotals();
使用带有嵌套循环的纯JavaScript尝试以下操作: (如果要获取所有添加项)

var-arr=[[29,49,89]、[78,86,96]、[80,43,11];
结果变量;
对于(变量i=0,len=arr.length;i
如果您一次只想得到一笔款项:

    var result;
    for(var i = 0, len = arr.length; i < len; i++) {
        result+= arr[j]["YourIndex"]; 
    } 
var结果;
对于(变量i=0,len=arr.length;i
您可以使用array.reduce获得所需的输出

for (var question= 0; question < data.questions.length; question++) {
      // get the values for the organization/country
      values = data.values[question][country];

      console.log(values);

      var sumOfValues = values.reduce(
        function(previousVal, currentVal) { 
          return previousVal + currentVal; 
        }, 0);
      console.log("Sum of values");
      console.log(sumOfValues);
    }
for(var-question=0;question
这是普朗克

编辑: array.reduce是可用的最快的方法之一。可以找到许多有关此信息的链接。 我这里有一个,看看答案。

查看array.reduce()@NinaScholz如果他知道自己在做什么,为什么不:p..或者干脆忽略它,使用第一种方法。
    var result;
    for(var i = 0, len = arr.length; i < len; i++) {
        result+= arr[j]["YourIndex"]; 
    } 
for (var question= 0; question < data.questions.length; question++) {
      // get the values for the organization/country
      values = data.values[question][country];

      console.log(values);

      var sumOfValues = values.reduce(
        function(previousVal, currentVal) { 
          return previousVal + currentVal; 
        }, 0);
      console.log("Sum of values");
      console.log(sumOfValues);
    }