Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.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:求和到数组中_Javascript_Jquery_Object_Sum - Fatal编程技术网

Javascript:求和到数组中

Javascript:求和到数组中,javascript,jquery,object,sum,Javascript,Jquery,Object,Sum,我的职能是: var myArray = new Array(); $('input:checked').each(function(index) { myArray .push($(this).attr('id') + " : " +$(this).val()); }); 让我知道如何在此数组中求和: myArray [ "Apple: 10", "Apple: 3", "Banana: 3", "Pear: 7", "Pineapple: 7" ] 我的结果> myNewArra

我的职能是:

var myArray = new Array();
$('input:checked').each(function(index) {
    myArray .push($(this).attr('id') + " : " +$(this).val());
});
让我知道如何在此数组中求和:

myArray [ "Apple: 10", "Apple: 3", "Banana: 3", "Pear: 7", "Pineapple: 7" ]
我的结果>

myNewArray [ "Apple: 13",  "Banana: 3", "Pear: 7", "Pineapple: 7" ]

谢谢你的帮助

试试这样的东西

var数据=[“苹果:10”,“苹果:3”,“香蕉:3”,“梨:7”,“菠萝:7”];
var newObject={};
var总和=0;
$。每个(数据、函数(k、v){
var key=v.split(“:”[0];
var值=v.split(“:”[1];
如果((输入新对象))
{
newObject[key]=parseInt(newObject[key])+parseInt(value);
}
其他的
{
newObject[key]=$.trim(值);
}
});
console.log(newObject)

这是一个对象版本。这并不是你真正想要的,但是按照同样的思路,老实说,这是一个数据结构,有点整洁

var myArray=[“苹果:10”,“苹果:3”,“香蕉:3”,“梨:7”,“菠萝:7”];
var newArray={};
myArray.forEach(函数(val){
var item=val.split(“:”);
变量键=项目[0];
var num=parseInt(第[1]项,第10项);
if(newArray.hasOwnProperty(键)){
newArray[key]+=num;
}否则{
newArray[key]=num;
}
});

警报(JSON.stringify(newArray))前面的答案是错误的。 对不起,我已经修好了

var myArray = [ "Apple: 10", "Apple: 3", "Banana: 3", "Pear: 7", "Pineapple: 7" ],
newArray= {},
i,
temp;
for (i=0; i<myArray.length;i++){
     temp = myArray[i].split(':');
     temp[0] = temp[0].replace( /\s/g, "");
     temp[1] = temp[1].replace( /\s/g, "");
    if(newArray[temp[0]]){
         newArray[temp[0]] = newArray[temp[0]] + parseInt(temp[1]);
    }else{
          newArray[temp[0]] = parseInt(temp[1]);
    }
 }
 console.log(newArray); 
var myArray=[“苹果:10”,“苹果:3”,“香蕉:3”,“梨:7”,“菠萝:7”],
newArray={},
我
临时雇员

对于(i=0;i使用正则表达式拆分数组元素并将其添加到临时对象:

var regex = /([A-Za-z]+): (\d+)/
var obj = {};
for (var i = 0, l = arr.length; i < l; i++) {
  var match = arr[i].match(regex);
  var name = match[1];
  var value = match[2];
  if (!obj[name]) obj[name] = 0;
  obj[name] += +value;
}
就我个人而言,我会让它像这样,因为对象真的很容易操纵

但是,如果确实需要再次将数据返回到数组中,只需在对象上循环并将字符串作为元素推送到数组中:

var out = [];
for (var p in obj) {
    out.push(p + ': ' + obj[p]);
}

console.log(out) // [ "Apple: 13", "Banana: 3", "Pear: 7", "Pineapple: 7" ]

到目前为止您尝试了什么?给我们看一些代码。好的,对数组求和的一种方法是将字符串
“Apple:10”、“Apple:3”
替换为字符串
“Apple:10”、“Apple:3”
。你有重复的ID吗???解决这个问题!你需要看看你用来存储数据的JS对象的类型。数组在这里确实不合适。对象会更好。(换句话说,@Masiorama说的).我投票结束这个问题,因为它是一个XY问题,来自一个不应该存在的情况(重复ID)。它甚至不做询问者想要它做的事情。doOP想要数组中的值的总和,现在OP有了更改代码。自从第一次修改调用对象
newArray
有点confusing@JanDvorak,现在好了吗?你认为这会返回OP要求的吗?@dystroy我纠正了。我的错误
var out = [];
for (var p in obj) {
    out.push(p + ': ' + obj[p]);
}

console.log(out) // [ "Apple: 13", "Banana: 3", "Pear: 7", "Pineapple: 7" ]