Can';在javascript中不能完全跳出for循环

Can';在javascript中不能完全跳出for循环,javascript,arrays,loops,Javascript,Arrays,Loops,有一个简单的例子: const arr = [ {name: 'first', amount: 2}, {name: 'second', amount: 1}, {name: 'third', amount: 1} ] const obj = {name: 'second', amount: 3} for (let i = 0; i < arr.length; i++) { if (arr[i].name === obj.name) { arr[i].amount

有一个简单的例子:

const arr = [
  {name: 'first', amount: 2},
  {name: 'second', amount: 1},
  {name: 'third', amount: 1}
]
const obj = {name: 'second', amount: 3}

for (let i = 0; i < arr.length; i++) {
  if (arr[i].name === obj.name) {
    arr[i].amount += obj.amount;
    break;
  } else {
    arr.push(obj)
  }
}
const arr=[
{名称:'第一',金额:2},
{name:'second',金额:1},
{姓名:'第三',金额:1}
]
const obj={name:'second',金额:3}
for(设i=0;i
我想执行普通的for循环,期望的结果是,如果数组中有一个名称相同的对象,那么只需将
数量
相加,否则我想将
obj
推到列表中。
但事实上,这两件事都发生了。当我从if语句中跳出else语句时,如何使其不运行?

如果找到数据集,则需要另一个变量
found
,并将其设置为
true
。然后不要将实际数据集推送到数组中

基本上,您需要访问所有元素,并在最后决定是否将对象添加到数组中

对于代码,您至少要执行一个操作,要么更新实际的数据集结束出口(仅当所需的
名称
位于第一个元素中时有效),要么将对象推送到数组中。直到找到所需的数据集,或者没有更多的元素可用为止

const arr=[{name:'first',amount:2},{name:'second',amount:1},{name:'third',amount:1}];
const obj={name:'second',amount:3};
var=false;
for(设i=0;i

.as控制台包装{max height:100%!important;top:0;}
解决此问题的一种更具可读性的方法是使用以下方法:

const arr=[
{名称:'第一',金额:2},
{name:'second',金额:1},
{姓名:'第三',金额:1}
];
const obj={name:'second',amount:3};
常量元素=arr.find(el=>el.name==obj.name);
if(元素){
元素金额+=对象金额;
}否则{
方位推力(obj);
}

控制台日志(arr)
您可以使用array
findIndex
检查是否存在名称与对象名称相同的对象
findIndex
返回
-1
未找到任何结果。在这种情况下,按数组中的
obj
,否则更新金额值

const arr=[{
姓名:'第一',
金额:2
},
{
姓名:'第二',
金额:1
},
{
姓名:"第三",,
金额:1
}
]
常量对象={
姓名:'第二',
金额:3
}
让ifKeyExist=arr.findIndex((项)=>{
return item.name==obj.name
})
如果(ifKeyExist===-1){
方位推力(obj)
}否则{
arr[ifKeyExist]。金额+=obj.amount
}

console.log(arr)
请不要把我打倒。我是Javascript新手期望的输出是什么?@brk期望的结果是增加数组中第二个对象的数量。这很有效!非常感谢。但在这种情况下,不需要中断,因为循环仍在继续。