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 将对象数组中的所有值相加';parseFloat()后的s键_Javascript_Arrays_Javascript Objects - Fatal编程技术网

Javascript 将对象数组中的所有值相加';parseFloat()后的s键

Javascript 将对象数组中的所有值相加';parseFloat()后的s键,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我在里面有一个对象数组,如下所示: let ary = [ { a : 'something', b: '2', c: 'something' }, { a : 'something', b: '2', c: 'some

我在里面有一个对象数组,如下所示:

        let ary = [
            {
                a : 'something',
                b: '2',
                c: 'something'
            },
            {
                a : 'something',
                b: '2',
                c: 'something'
            },
            {
                a : 'something',
                b: '2',
                c: 'something'
            }
        ]
我需要将每个对象上的所有键b的值相加,所以我首先使用parseFloat将它们更改为数字,如下所示:

ary.forEach( item => {
   item.b = parseFloat(item.b)
})
接下来,我在.map函数中使用reduce()

let total = ary.map((item, index) => {
    return ary.reduce((a, b) => ({x: a.b + b.b}))
})
但我没有得到我想要的,它返回一个对象数组,两个对象的总值相同

array = [
  {x : total},
  {x : total}
]
我应该如何得到单一的总价值?喜欢 总计=2+2+2,每个2都来自ary中的b键。

您可以尝试:

const total = ary.reduce((sum, item) => (sum + parseFloat(item.b)), 0);

使用一个循环,您将调用
parseFloat
并对所有
b
属性进行求和。

您可以通过分离对象的值、获取数字和使用reduce添加所有值来链接一些方法

var数组=[{a:'something',b:'2',c:'something'},{a:'something',b:'2',c:'something'},{a:'something',b:'2',c:'something'},
总和=数组
.map(({b})=>b)
.地图(编号)
.减少((a,b)=>a+b);

控制台日志(总和)只需去掉
.map()
,只保留
.reduce()
@NinaScholz“我需要将所有键b的值“+”…只得到总数?”@Andreas我去掉了.map()并得到了TypeError:减少没有初始值的空数组我需要在map或forEach中做吗?@andromad
。reduce()
就是你所需要的。不需要
.map()
.forEach()
。谢谢,它可以工作。。。事实上,这真的很有意义,因为我之前得到了两次总数,但我不能真正完全理解后面的0是做什么的。介意帮我更清楚地理解吗?从性能角度来看,reduce函数是解决这个问题的最佳方法吗?谢谢你的帮助,我现在就出去,稍后会尝试你的方法。