如果他们不这样做,就从我的数组中删除东西't没有前缀
Remove thing from my array if they don't have a prefix
这是我在这里的第一个问题,所以请注意:)
我有一个数组,里面有不同的名称。看起来像:["student:Monica", "student:Rebecca", "student:James", "teacher:Mr. Anders"]
。事实上,里面还有更多的名字。由此,我想列出一个只有学生的列表,它不应该在前面写student:
。
所以我试着这样做:
var students_and_teachers = ["student:Monica", "student:Rebecca", "student:James", "teacher:Mr. Anders"];
for (i = 0; i < students_and_teachers.length; i++) {
var a_student_or_teacher = students_and_teachers[i];
if (a_student_or_teacher.startsWith("student:") === true) {
students_and_teachers[i] = a_student_or_teacher.substring(8, 100);
} else {
delete students_and_teachers[i];
}
}
这很好,但现在当我向学生和老师展示之后,它看起来像:Array [ "Monica", "Rebecca", "James", , ]
。但它最终应该只有三个学生,而不是空的东西。
我做错什么了吗?
筛选学生,然后删除":"尝试
students_and_teachers.filter(function( name ) {
return name.indexOf("student") > -1;
}).map(function( name ) {
return name.split( ':' )[ 1 ];
});
结果将类似
Array [ "Monica", "Rebecca", "James" ]
怎么样?
students_and_teachers.map(function( name ) {
name = name.split( ':' );
return name[ 0 ] === 'student' ? name[ 1 ] : '';
}).filter( Boolean );
参考:Array.prototype.filter
、Array.prototype.map
、String.prototype.split
发布了一些不错的替代方案,但代码不起作用的原因是delete
没有删除数组元素,只是将其保留为未定义。
可以使用splice
删除数组元素。
删除元素后,需要递减循环变量(i--
)。否则,它将跳过下一个元素。
我的代码段使用indexOf
,因为大多数浏览器还不支持startsWith
var students_and_teachers = [
"student:Monica",
"student:Rebecca",
"student:James",
"teacher:Mr. Anders",
"teacher:Ms. Jones",
"student:Rick"
];
for (i = 0; i < students_and_teachers.length; i++) {
var a_student_or_teacher = students_and_teachers[i];
if (a_student_or_teacher.indexOf("student:") === 0) {
students_and_teachers[i] = a_student_or_teacher.substring(8, 100);
} else {
students_and_teachers.splice(i,1);
i--;
}
}
alert(students_and_teachers);
相关文章:
- 使用php或javascript从facebook相册URL中删除多余的部分
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何删除多行HTML排列中的空白
- 如何从rails中的代码中删除新行( )
- 删除对HTML元素的拖动
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 按顺序添加和删除类
- iframe正在添加标签,需要删除它们
- 如何在HTML输入字段中添加不可删除的后缀
- addData()从最新图表中删除.js 2.1.3-怎么了
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 删除CKEditor工具栏按钮,但不删除功能
- 如何在gull注入的脚本路径中删除路径前缀
- 如果他们不这样做,就从我的数组中删除东西't没有前缀
- 从 ASP 加载的 URL 中删除 http:// 前缀
- 删除标记字符串的前缀和后缀文本
- 如何格式化或修剪数字以删除前缀'0'.
- X2JS删除属性前缀
- 在js中,表单提交时从响应体中删除前缀
- Javascript-Regex,用于删除前缀数组