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);
}