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" ]