$.inArray()循环问题的更好语法
Better Syntax for $.inArray() Loop Issue
我正在尝试使用$.inArray的循环。基本上,我有要循环的信息,我需要获取一段信息并将其添加到数组中。如果该区域中已经存在该信息(有重复的,三个相同,四个相同,等等,一直到同一数据的12个实例),我会在数据的末尾添加一个数字来确定它是哪个重复
var subject_name_original = subject_name;
if ($.inArray(subject_name, subject_array) !== -1){
subject_name = subject_name_original + '2';
if ($.inArray(subject_name, subject_array) !== -1){
subject_name = subject_name_original + '3';
if ($.inArray(subject_name, subject_array) !== -1){
subject_name = subject_name_original + '4';
}
}
}
subject_array.push(subject_name);
这一直循环到12个实例,所以你可以看到它的编写方式不是很有效。我想使用一个计数器变量来增加附加的数字,但不知道如何在这样的循环中使用inArray。
有什么想法吗?谢谢你的帮助!
您可以这样做:
var subjectCounter = 1;
var originalSubjectName = subjectName;
while (subjectArray.indexOf(subjectName) !== -1) { // $.inArray is the same as this
subjectCounter += 1;
subjectName = originalSubjectName + subjectCounter;
}
subjectArray.push(subjectName);
如果subject_array没有排序,请先对其进行排序。那么你应该只需要访问每个项目一次。
var sorted = subject_array.sort();
var subject_counter = 1;
var subject_name_original = subject_name;
for (var i = sorted.length - 1; i >= 0; i--) {
if (sorted[i] == subject_name) {
subject_counter++;
subject_name = subject_name_original + subject_counter;
};
};
subject_array.push(subject_name);
这个应该有效(未测试):
var i = 1;
var subject_name_original = subject_name;
while (++i < 13) { // at first loop, i = 2
if ($.inArray(subject_name, subject_array) !== -1) {
subject_name = subject_name_original + i;
} else {
// $.inArray() failed beyound the second loop :
if (i > 3) {
subject_name = subject_name_original + (i - 1);
subject_array.push(subject_name);
}
// $.inArray() failed at second loop (i = 3) :
else if (i > 2) {
subject_name = subject_name_original;
subject_array.push(subject_name);
}
// Does nothing if $.inArray() failed at first loop.
break;
}
}
相关文章:
- 有没有更好的动手、具体的方法来学习Javascript
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- 在JavaScript中拆分日期字符串的更好方法是什么
- 为什么$.brower被弃用?还有什么更好的替代方案
- 设置嵌套对象属性的更好方法
- 您有更好的动态方式来缩短复杂的代码jquery吗
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 如何创建更好的方式来维护基于我的代码访问的最后一个页面
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- 什么更好?使用iframe或jQuery之类的东西在外部网站中加载HTML文件
- 将数组从javascript格式化为php的更好方法,反之亦然
- jquery:将动画绑定到滚动条位置的更好方法
- 有更好的方法吗?(递归解析HTML unicode实体)
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 在Notepad++中更好地突出显示Javascript语法
- 是否有更好的语法来执行此代码
- 更好的JQuery性能语法
- jQuery -还有比"parent().parent().parent()"更好的语法吗?
- $.inArray()循环问题的更好语法