如何计算数组中对象键的总和--javascript

时间:2016-09-09 01:20:33

标签: javascript reactjs firebase react-native firebase-realtime-database

问题

我正在使用firebase并做出反应。

我从firebase数据库返回了一个如下所示的数组。

$lastday = date("Y-m-t");
$lastdayaftersixmonth = strtotime("$lastday +6 months");

在每个对象下,我返回了一个项目,"级别:4"。

所以我有三个包含4,5,6的对象。我如何将这些加在一起?

谢谢!

5 个答案:

答案 0 :(得分:7)

一个简单的循环



var a = [{level:1},{level:2},{level:3},{level:4}],
        total = 0;
    for (var i=0; i<a.length; i++) {
        total += a[i].level;
    }
console.log('total', total)
&#13;
&#13;
&#13;

或减少

&#13;
&#13;
var a = [{level:1},{level:2},{level:3},{level:4}]
console.log(a.reduce( function(cnt,o){ return cnt + o.level; }, 0))
&#13;
&#13;
&#13;

答案 1 :(得分:7)

您可以使用Javascript的reduce功能。这与@epascarello的答案基本相同,但在ES6语法中。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

const arr = [{level:2},{level:4},{level:5}]; 

const total = arr.reduce((prev,next) => prev + next.level,0);

console.log(total);

答案 2 :(得分:1)

使用Array.prototype.forEach()方法迭代数组并对元素求和。

我们假设您的数组是public static void main(String[] args) throws IOException, FileNotFoundException { // change this value to whatever row count you actually have int NUM_ROWS = 100; double[][] array = new double[NUM_ROWS][3]; BufferedReader reader = new BufferedReader(new FileReader("Dimensions.txt")); int counter = 0; while (true) { String line = reader.readLine(); if (line == null) break; String[] parts = line.trim().split("\\s+"); for (int i=0; i < 3; ++i) { array[counter][i] = Double.parseDouble(parts[i]); } System.out.println(line); ++counter; } reader.close(); } 每个var foo = [object, object, object]都有此结构object

编写如下代码:

{ level : 4 }

var sum = 0; foo.forEach(function(obj){ sum += obj.level; }); 将存储总和

答案 3 :(得分:0)

您是否尝试过访问数组中的对象并调用属性?

            String s = "NaMe";
            int upper = 0;
            int lower = 0;
            for(int i = 0; i<s.length();i++ ) {
                int charASCII= (int)s.charAt(i);
                if (charASCII <91 && charASCII > 64){
                    upper ++;
                }
                if (charASCII <123 && charASCII > 96){
                    lower ++;
                }
            }
            System.out.print("Given name string contains "+upper+ " uppercase letters & "+lower + " lowercase letters");

答案 4 :(得分:0)

此代码将计算数组的总和。首先,声明一个变量;此变量的名称为sumsum包含总和。其次,声明类型为numbers的{​​{1}}变量。该变量将包含数字。

然后我们开始一个循环(for)操作,我们在其中为Array变量赋值sum。 然后我们在(sum= sum+i);中显示数字和总和。

(document.write)