Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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数组中的所有price元素_Javascript_Jquery_Arrays_Json - Fatal编程技术网

如何在javascript中添加json数组中的所有price元素

如何在javascript中添加json数组中的所有price元素,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我有以下JSON数组: fruits = [{"fruit":"banana","amount":"2","price":"1"},{"fruit":"apple","amount":"5","price":"2"},{"fruit":"kiwi","amount":"1","price":"5"}] 如何计算所有“价格”值?结果应该是8 到目前为止,我在访问价格项目时遇到以下问题: function count(fruits) { var sum = 0; for (var

我有以下JSON数组:

fruits = [{"fruit":"banana","amount":"2","price":"1"},{"fruit":"apple","amount":"5","price":"2"},{"fruit":"kiwi","amount":"1","price":"5"}]
如何计算所有“价格”值?结果应该是8

到目前为止,我在访问价格项目时遇到以下问题:

function count(fruits) {
    var sum = 0;
    for (var i = 0; i < fruits.length; i++) {
        sum = sum + fruits[i][price];
    }
    return sum;
}

console.log(count(fruits)
函数计数(水果){
var总和=0;
对于(变量i=0;i
谢谢!

两件事:

  • 线路

    sum = sum + fruits[i][price];
    
    应该是

    sum = sum + fruits[i].price;
    
    fruits[i]['price'] or fruits[i].price
    
    甚至

    sum += fruits[i].price;
    
    您的代码试图使用名为
    price
    的变量,而不是水果条目的
    price
    属性

  • 您的价格是字符串,因此我们希望确保它们在求和时转换为数字。您有很多选择:对它们应用一元数
    +
    ,将它们传递到
    Number()
    ,或使用
    parseInt(…,10)
    。下面我将使用一元数
    +
    ,但有加号(没有双关!)每个都有缺点

  • var fruits=[{“水果”:“香蕉”,“数量”:“2”,“价格”:“1”},{“水果”:“苹果”,“数量”:“5”,“价格”:“2”},{“水果”:“猕猴桃”,“数量”:“1”,“价格”:“5”}]
    功能计数(水果){
    var总和=0;
    对于(变量i=0;i
    
  • 线路

    sum = sum + fruits[i][price];
    
    应该是

    sum = sum + fruits[i].price;
    
    fruits[i]['price'] or fruits[i].price
    
    甚至

    sum += fruits[i].price;
    
    您的代码试图使用名为
    price
    的变量,而不是水果条目的
    price
    属性

  • 您的价格是字符串,因此我们希望确保它们在求和时转换为数字。您有很多选择:对它们应用一元数
    +
    ,将它们传递到
    Number()
    ,或使用
    parseInt(…,10)
    。下面我将使用一元数
    +
    ,但有加号(没有双关!)每个都有缺点

  • var fruits=[{“水果”:“香蕉”,“数量”:“2”,“价格”:“1”},{“水果”:“苹果”,“数量”:“5”,“价格”:“2”},{“水果”:“猕猴桃”,“数量”:“1”,“价格”:“5”}]
    功能计数(水果){
    var总和=0;
    对于(变量i=0;isum+=+水果[i].price;//您需要像以下那样访问它们:

    fruits[i].price
    
    然后在添加之前将其转换为数字:

    parseInt(fruits[i].price, 10);
    
    最终代码:

    fruits = [{"fruit":"banana","amount":"2","price":"1"},{"fruit":"apple","amount":"5","price":"2"},{"fruit":"kiwi","amount":"1","price":"5"}]
    var total = 0;
    for(var i=0; i<fruits.length; i++){
        total += parseInt(fruits[i].price, 10);
    }
    
    alert(total); //8
    
    水果=[{“水果”:“香蕉”,“数量”:“2”,“价格”:“1”},{“水果”:“苹果”,“数量”:“5”,“价格”:“2”},{“水果”:“猕猴桃”,“数量”:“1”,“价格”:“5”}]
    var合计=0;
    
    对于(var i=0;i您需要访问它们,如下所示:

    fruits[i].price
    
    然后在添加之前将其转换为数字:

    parseInt(fruits[i].price, 10);
    
    最终代码:

    fruits = [{"fruit":"banana","amount":"2","price":"1"},{"fruit":"apple","amount":"5","price":"2"},{"fruit":"kiwi","amount":"1","price":"5"}]
    var total = 0;
    for(var i=0; i<fruits.length; i++){
        total += parseInt(fruits[i].price, 10);
    }
    
    alert(total); //8
    
    水果=[{“水果”:“香蕉”,“数量”:“2”,“价格”:“1”},{“水果”:“苹果”,“数量”:“5”,“价格”:“2”},{“水果”:“猕猴桃”,“数量”:“1”,“价格”:“5”}]
    var合计=0;
    
    对于(var i=0;i您的代码中有一些错误。 第一个在这里:
    sum=sum+水果[i][price];
    
    您试图使用名为price的变量,而不是对象的属性价格。您可以使用
    水果[i][“price”]
    水果[i]访问属性。price
    。 要获得一个数字,当您进行求和时,您需要将字符串转换为数字,为此您可以使用
    parseInt(fruits[i][“price”]);
    。最后一行的最后一个错误是您忘记了括号和分号


    您的代码中有一些错误。 第一个在这里:
    sum=sum+水果[i][price];
    
    您试图使用名为price的变量,而不是对象的属性价格。您可以使用
    水果[i][“price”]
    水果[i]访问属性。price
    。 要获得一个数字,当您进行求和时,您需要将字符串转换为数字,为此您可以使用
    parseInt(fruits[i][“price”]);
    。最后一行的最后一个错误是您忘记了括号和分号


    您的函数还可以,只需添加parseInt将其转换为int类型,并且在fruits[i][price]中的语法不正确。 您有两个选择:

     fruits[i]["price"] 
     OR
     fruits[i].price
    
    在我看来,我会添加一个小的逻辑代码来检查它是否是一个数字。如果输入数据未定义或为空,则返回0

    var fruits = [{"fruit":"banana","amount":"2","price":"1"},{"fruit":"apple","amount":"5","price":"2"},{"fruit":"kiwi","amount":"1","price":"5"}]
    
    function count(data) {
        var sum = 0;
        if(data === void 0 ) return 0; // no array input
        data.forEach(function(fruit) {
           console.log(fruit);
           sum += parseInt(fruit.price || 0 ); // if price is undefined, null or NaN, return 0
        })
        return sum;
    }
    
    display(count(fruits));
    
    function display(msg) {
      var p = document.createElement('p');
      p.innerHTML = String(msg);
      document.body.appendChild(p);
    }
    

    您的函数还可以,只需添加parseInt即可将其转换为int类型,并且在fruits[i][price]中的语法不正确。 您有两个选择:

     fruits[i]["price"] 
     OR
     fruits[i].price
    
    在我看来,我会添加一个小的逻辑代码来检查它是否是一个数字。如果输入数据未定义或为空,则返回0

    var fruits = [{"fruit":"banana","amount":"2","price":"1"},{"fruit":"apple","amount":"5","price":"2"},{"fruit":"kiwi","amount":"1","price":"5"}]
    
    function count(data) {
        var sum = 0;
        if(data === void 0 ) return 0; // no array input
        data.forEach(function(fruit) {
           console.log(fruit);
           sum += parseInt(fruit.price || 0 ); // if price is undefined, null or NaN, return 0
        })
        return sum;
    }
    
    display(count(fruits));
    
    function display(msg) {
      var p = document.createElement('p');
      p.innerHTML = String(msg);
      document.body.appendChild(p);
    }
    

    您应该试试这个简单的代码片段

    你不需要jQuery来做这个操作,简单的JS就可以了

    var sum = 0;
    for(var item in fruits){
        sum += ~~(fruits[item].price)
    }
    console.log(sum)
    

    干杯!

    您应该试试这个简单的代码片段

    你不需要jQuery来做这个操作,简单的JS就可以了

    var sum = 0;
    for(var item in fruits){
        sum += ~~(fruits[item].price)
    }
    console.log(sum)
    

    干杯!

    您的代码有2个错误:

    要访问price属性

    fruits[i][price]
    
    应该是

    sum = sum + fruits[i].price;
    
    fruits[i]['price'] or fruits[i].price
    
    price属性的类型为string。因此,“+”运算符将连接价格字符串。若要将它们添加到一起,需要通过执行以下操作将其类型更改为number

    parseInt(fruits[i]['price'], 10) or +fruits[i]['price']
    
    如果price属性不包含有效的数字,则结果将为NaN(不是数字)。您可以使用or运算符避免这种情况

    +fruits[i]['price'] || 0
    
    使用所有现代浏览器支持的ES5阵列扩展,您可以编写

    fruits.reduce(function(m,v) { return m + (+v.price);}, 0);
    
    在未来的浏览器中使用ES6,这可以减少到

     fruits.reduce((m,v) => m + (+v.price), 0);
    

    您的代码有2个错误:

    要访问price属性

    fruits[i][price]
    
    应该是

    sum = sum + fruits[i].price;
    
    fruits[i]['price'] or fruits[i].price
    
    price属性的类型为string。因此,“+”运算符将连接价格字符串。若要将它们添加到一起,需要通过执行以下操作将其类型更改为number

    parseInt(fruits[i]['price'], 10) or +fruits[i]['price']
    
    如果price属性不包含有效的数字,则结果将为NaN(不是数字)。您可以使用or运算符避免这种情况

    +fruits[i]['price'] || 0
    
    使用所有现代浏览器支持的ES5阵列扩展,您可以编写

    fruits.reduce(function(m,v) { return m + (+v.price);}, 0);
    
    在未来的浏览器中使用ES6,这可以减少到

     fruits.reduce((m,v) => m + (+v.price), 0);
    

    这是一个对象文字数组。没有a(那篇文章专门针对对象,但同样适用于数组)。这是一个对象文字数组。没有a(那篇文章专门针对对象,但同样适用于数组)