如何在javascript中添加json数组中的所有price元素
我有以下JSON数组:如何在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
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;i sum+=+水果[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(那篇文章专门针对对象,但同样适用于数组)