Javascript 如何将包含逗号的数字字符串转换为整数并相加?

Javascript 如何将包含逗号的数字字符串转换为整数并相加?,javascript,arrays,type-conversion,Javascript,Arrays,Type Conversion,我有一个名为bondFilms的对象,具有以下属性,例如“title”、“year”、和“gross”:“272282882” 我想循环检查每个项目,并添加gross值,以获得总额gross金额 const-bondFilms=[ {“标题”:“天空坠落”,“年份”:2012年,“演员”:“丹尼尔·克雷格”,“毛额”:“$1108561008”}, {“头衔”:“雷霆球”,“年份”:1965年,“演员”:“肖恩·康纳利”,“毛额”:“1014941117美元”}, {“头衔”:“金手指”,“年

我有一个名为
bondFilms
的对象,具有以下属性,例如
“title”
“year”
、和
“gross”:“272282882”

我想循环检查每个项目,并添加
gross
值,以获得总额
gross
金额

const-bondFilms=[
{“标题”:“天空坠落”,“年份”:2012年,“演员”:“丹尼尔·克雷格”,“毛额”:“$1108561008”},
{“头衔”:“雷霆球”,“年份”:1965年,“演员”:“肖恩·康纳利”,“毛额”:“1014941117美元”},
{“头衔”:“金手指”,“年份”:1964年,“演员”:“肖恩·康纳利”,“毛额”:“$912257512”},
{“标题”:“活着就让它死去”,“年份”:1973年,“演员”:“罗杰·摩尔”,“毛”:“825110761美元”},
{“头衔”:“你只活了两次”,“年份”:1967年,“演员”:“肖恩·康纳利”,“毛”:“756544419美元”},
{“头衔”:“爱我的间谍”,“年份”:1977年,“演员”:“罗杰·摩尔”,“毛”:“692713752美元”},
{“头衔”:“皇家赌场”,“年份”:2006年,“演员”:“丹尼尔·克雷格”,“毛额”:“669789482美元”},
{“头衔”:“月球人”,“年份”:1979年,“演员”:“罗杰·摩尔”,“毛额”:“655872400美元”},
{“头衔”:“钻石是永恒的”,“年份”:1971年,“演员”:“肖恩·康纳利”,“毛额”:“648514469美元”},
{“标题”:“安慰的量子”,“年份”:2008年,“演员”:“丹尼尔·克雷格”,“毛额”:“622246378美元”},
{“标题”:“来自爱的俄罗斯”,“年份”:1963年,“演员”:“肖恩·康纳利”,“毛”:“576277964美元”},
{“标题”:“改天”、“年份”:2002年,“演员”:“皮尔斯·布罗斯南”,“毛额”:“543639638美元”},
{“头衔”:“黄金眼”,“年份”:1995年,“演员”:“皮尔斯·布罗斯南”,“毛额”:“529548711美元”},
{“头衔”:“关于女王陛下的特勤局”,“年份”:1969年,“演员”:“乔治·拉森比”,“毛额”:“505899782美元”},
{“标题”:“世界还不够”,“年份”:1999年,“演员”:“皮尔斯·布罗斯南”,“毛额”:“491617153美元”},
{“头衔”:“仅供你观看”,“年份”:1981年,“演员”:“罗杰·摩尔”,“毛额”:“486468881美元”},
{“标题”:“明天永不消逝”,“年份”:1997年,“演员”:“皮尔斯·布罗斯南”,“毛”:“478946402美元”},
{“头衔”:“拿着金枪的男人”,“年份”:1974年,“演员”:“罗杰·摩尔”,“毛”:“448249281美元”},
{“头衔”:“No博士”,“年份”:1962年,“演员”:“肖恩·康纳利”,“毛额”:“440759072美元”},
{“标题”:“章鱼”,“年份”:1983年,“演员”:“罗杰·摩尔”,“毛额”:“$426244352”},
{“标题”:“活着的白昼”,“年份”:1987年,“演员”:“蒂莫西·道尔顿”,“毛额”:“381088866美元”},
{“标题”:“杀戮的视角”,“年份”:1985年,“演员”:“罗杰·摩尔”,“毛”:“$321172633”},
{“标题”:“杀人许可证”,“年份”:1989年,“演员”:“蒂莫西·道尔顿”,“毛额”:“28517191美元”}
];
设结果=0;
bondFilms.forEach((电影)=>{
result=result+parseInt(film.gross.replace(“,”,“))};
console.log(结果);
执行此操作

let result = 0;
bondFilms.forEach((film)=>{
    result = result +  parseInt((film.gross.replace(/[$,]/g, "")});
console.log(result);

问题的再现是:


console.log(parseInt($42”);
对于
.reduce()
操作来说,这是一个很好的例子

const-bondFilms=[
{“标题”:“天空坠落”,“年份”:2012年,“演员”:“丹尼尔·克雷格”,“毛额”:“$1108561008”},
{“头衔”:“雷霆球”,“年份”:1965年,“演员”:“肖恩·康纳利”,“毛额”:“1014941117美元”},
{“头衔”:“金手指”,“年份”:1964年,“演员”:“肖恩·康纳利”,“毛额”:“$912257512”},
{“标题”:“活着就让它死去”,“年份”:1973年,“演员”:“罗杰·摩尔”,“毛”:“825110761美元”},
{“头衔”:“你只活了两次”,“年份”:1967年,“演员”:“肖恩·康纳利”,“毛”:“756544419美元”},
{“头衔”:“爱我的间谍”,“年份”:1977年,“演员”:“罗杰·摩尔”,“毛”:“692713752美元”},
{“头衔”:“皇家赌场”,“年份”:2006年,“演员”:“丹尼尔·克雷格”,“毛额”:“669789482美元”},
{“头衔”:“月球人”,“年份”:1979年,“演员”:“罗杰·摩尔”,“毛额”:“655872400美元”},
{“头衔”:“钻石是永恒的”,“年份”:1971年,“演员”:“肖恩·康纳利”,“毛额”:“648514469美元”},
{“标题”:“安慰的量子”,“年份”:2008年,“演员”:“丹尼尔·克雷格”,“毛额”:“622246378美元”},
{“标题”:“来自爱的俄罗斯”,“年份”:1963年,“演员”:“肖恩·康纳利”,“毛”:“576277964美元”},
{“标题”:“改天”、“年份”:2002年,“演员”:“皮尔斯·布罗斯南”,“毛额”:“543639638美元”},
{“头衔”:“黄金眼”,“年份”:1995年,“演员”:“皮尔斯·布罗斯南”,“毛额”:“529548711美元”},
{“头衔”:“关于女王陛下的特勤局”,“年份”:1969年,“演员”:“乔治·拉森比”,“毛额”:“505899782美元”},
{“标题”:“世界还不够”,“年份”:1999年,“演员”:“皮尔斯·布罗斯南”,“毛额”:“491617153美元”},
{“头衔”:“仅供你观看”,“年份”:1981年,“演员”:“罗杰·摩尔”,“毛额”:“486468881美元”},
{“标题”:“明天永不消逝”,“年份”:1997年,“演员”:“皮尔斯·布罗斯南”,“毛”:“478946402美元”},
{“头衔”:“拿着金枪的男人”,“年份”:1974年,“演员”:“罗杰·摩尔”,“毛”:“448249281美元”},
{“头衔”:“No博士”,“年份”:1962年,“演员”:“肖恩·康纳利”,“毛额”:“440759072美元”},
{“标题”:“章鱼”,“年份”:1983年,“演员”:“罗杰·摩尔”,“毛额”:“$426244352”},
{“标题”:“活着的白昼”,“年份”:1987年,“演员”:“蒂莫西·道尔顿”,“毛额”:“381088866美元”},
{“标题”:“杀戮的视角”,“年份”:1985年,“演员”:“罗杰·摩尔”,“毛”:“$321172633”},
{“标题”:“杀人许可证”,“年份”:1989年,“演员”:“蒂莫西·道尔顿”,“毛额”:“28517191美元”}
];
让结果=粘合胶片。减少((acc,胶片)=>
acc+parseFloat(胶片总切片(1)。替换(/,/g,”),0
);
console.log(result);
最有效的解决方案是映射对象,然后在总值中进行匹配,以便它检测字符串中的数值

然后使用一个reduce来计算总金额的最终总和


const bondFilms = [
    { "title" : "Skyfall", "year" : 2012, "actor" : "Daniel Craig", "gross" : "$1,108,561,008" },
    { "title" : "Thunderball", "year" : 1965, "actor" : "Sean Connery", "gross" : "$1,014,941,117" },
    { "title" : "Goldfinger", "year" : 1964, "actor" : "Sean Connery", "gross" : "$912,257,512" },
    { "title" : "Live and Let Die", "year" : 1973, "actor" : "Roger Moore", "gross" : "$825,110,761" },
    { "title" : "You Only Live Twice", "year" : 1967, "actor" : "Sean Connery", "gross" : "$756,544,419" },
    { "title" : "The Spy Who Loved Me", "year" : 1977, "actor" : "Roger Moore", "gross" : "$692,713,752" },
    { "title" : "Casino Royale", "year" : 2006, "actor" : "Daniel Craig", "gross" : "$669,789,482" },
    { "title" : "Moonraker", "year" : 1979, "actor" : "Roger Moore", "gross" : "$655,872,400" },
    { "title" : "Diamonds Are Forever", "year" : 1971, "actor" : "Sean Connery", "gross" : "$648,514,469" },
    { "title" : "Quantum of Solace", "year" : 2008, "actor" : "Daniel Craig", "gross" : "$622,246,378" },
    { "title" : "From Russia with Love", "year" : 1963, "actor" : "Sean Connery", "gross" : "$576,277,964" },
    { "title" : "Die Another Day", "year" : 2002, "actor" : "Pierce Brosnan", "gross" : "$543,639,638" },
    { "title" : "Goldeneye", "year" : 1995, "actor" : "Pierce Brosnan", "gross" : "$529,548,711" },
    { "title" : "On Her Majesty's Secret Service", "year" : 1969, "actor" : "George Lazenby", "gross" : "$505,899,782" },
    { "title" : "The World is Not Enough", "year" : 1999, "actor" : "Pierce Brosnan", "gross" : "$491,617,153" },
    { "title" : "For Your Eyes Only", "year" : 1981, "actor" : "Roger Moore", "gross" : "$486,468,881" },
    { "title" : "Tomorrow Never Dies", "year" : 1997, "actor" : "Pierce Brosnan", "gross" : "$478,946,402" },
    { "title" : "The Man with the Golden Gun", "year" : 1974, "actor" : "Roger Moore", "gross" : "$448,249,281" },
    { "title" : "Dr. No", "year" : 1962, "actor" : "Sean Connery", "gross" : "$440,759,072" },
    { "title" : "Octopussy", "year" : 1983, "actor" : "Roger Moore", "gross" : "$426,244,352" },
    { "title" : "The Living Daylights", "year" : 1987, "actor" : "Timothy Dalton", "gross" : "$381,088,866" },
    { "title" : "A View to a Kill", "year" : 1985, "actor" : "Roger Moore", "gross" : "$321,172,633" },
    { "title" : "License to Kill", "year" : 1989, "actor" : "Timothy Dalton", "gross" : "$285,157,191" }
]

const xs = bondFilms.map(x =>{
    return parseInt(x.gross.replace(',' , '').match(/\d+/g , 10))    
});

const total = xs.reduce((x , y) =>{
    return x + y;
});

console.log(total)

根据Sagar提取数值的答案,以下是如何使用Array.reduce在一行中完成此操作:

const total = bondFilms.reduce( (prev, current) => (prev + parseInt(current.gross.replace(",", "").replace("$", ""))), 0);


我试过这个,似乎有用

var result = 0;
for(i=0; i<bondFilms.length; i++){ 
result = result +Number(bondFilms[i].gross.replace("$", "").replace(/,/g,'')) 
};
console.log(result);
var结果=0;

对于(i=0;iI)包括您需要的胶卷