【发布时间】:2019-08-07 20:52:58
【问题描述】:
我想在数组中推送一个名称,该名称将是默认名称。
如果名称已经存在,我需要在推送之前向其添加一个整数,例如如果实例存在则递增。
如果不存在它应该创建一个实例,将在整个过程中做同样的事情但它应该递增。
var arr = ['team banana', 'team melon', 'team melon 2', 'team orange']
var name = 'team apple'; // this is default team name
var xarr = [];
if(arr.length){
// store the all instances of 'team apple'
for(var c = 0; c <= arr.length; c++){
if(arr[c] !== undefined){
if(arr[c].indexOf('team apple') > -1){
xarr.push(arr[c].replace(/['0-9']/g,''))
}
}
}
// start the iterration
for (var k=0; k<=arr.length; k++){
// if existing
if(arr[k] !== undefined){
if(name === arr[k]) {
arr.push(name+' ' + ( xarr.length))
}else{
// if not existing creat an instance of 'team apple'
// arr.push(name) <--- this cause the browser to crash
}
}
}
xarr = []
}else{
arr.push(name )
}
console.log(arr)
我期待的结果是这样的:
['team banana', 'team melon', 'team melon 2', 'team orange','team apple','team apple 1', 'team apple 2' ...]
代码块已经在工作了,只是如果数组中没有'team apple'的实例,它会开始崩溃
如果数组看起来像这样,一切正常:
['team banana', 'team melon', 'team melon 2', 'team orange','team apple']
但如果它看起来像这样:
['team banana', 'team melon', 'team melon 2', 'team orange']
浏览器开始崩溃。
这是导致它的代码部分,我不知道。
if(name === arr[k]) {
arr.push(name+' ' + (xarr.length))
}else{
// if not existing creat an instance of 'team apple'
// arr.push(name) <--- this cause the browser to crash
}
我什至不确定这是否是正确的实现,我真正想要的是一个递增的名称。任何建议都会有很大帮助。我也仅限于 ES5。
提前致谢
【问题讨论】:
-
你确定推送会导致浏览器崩溃吗?
-
@JackBashford 是的,它崩溃了,最终我关闭了浏览器并显示错误消息“在可能的内存不足崩溃之前暂停”
标签: javascript jquery arrays ecmascript-5