如何循环遍历一个字母数组并返回数组中第一个连续的辅音字母?
How can I loop through an array of letters and return the first consecutive consonants in the array?
我试图仅从数组中删除第一个连续辅音,因此它返回["e","l","l","o"]
arr=["h","e","l","l","o"]
vowel=["a","e","i","o","u"]
consonants=[];
for ( i in arr){
if(vowel.indexOf(arr[i]) =-1 ) {
consonants+=arr[i];
arr= arr.slice(consonants.length)
}else { return arr }
}
我可能把你的问题解释错了,但我把它看作是"返回一个数组,所有的前导辅音被删除"。
无论如何,这似乎是正则表达式的一个很好的用例:
var arr=["h","e","l","l","o"]
// hat-tip to @minitech in the comments for improving this line...
var result = arr.join('').replace(/^[^aeiou]+/, '').split('');
console.log(result);
// [ 'e', 'l', 'l', 'o' ]
解释:
-
arr.join('')
将数组转换为字符串 -
.replace(/^[^aeiou]+/, '')
删除所有前导非元音字符 -
.split('')
将结果转换为字符数组
在这里的循环中,
for ( i in arr){
你应该使用一个正常的for
循环;for in
用于遍历属性,并以任意顺序迭代。
在这里,
if(vowel.indexOf(arr[i]) =-1 )
你需要使用==
来检查是否相等;=
仅用于分配。(===
也是一个很好的选择,对于严格相等。)
在这里的语句中,
consonant+=arr[i];
第一次将consonant
从数组转换为字符串(假设consonants
只是一个错别字)。如果你只使用它的length
属性,这两种方法都可以,但你应该保持一致,要么用空字符串''
初始化它,要么用.push()
方法附加到它。
在这里的arr
重赋值中,
arr= arr.slice(consonant.length)
您将丢失被枚举的原始对象,这将使您的索引对未来的迭代产生偏差。每次还将consonant.length
切片,这将导致总共删除1、3、6、10等字符。最好是跳出循环,在最后执行一次切片操作。
你也应该声明你的变量,如果你还没有。总之,
var arr = ["h", "e", "l", "l", "o"];
var vowels = ["a", "e", "i", "o", "u"];
var consonants = [];
for (var i = 0; i < arr.length; i++) {
var c = arr[i];
if (vowels.indexOf(c) == -1) {
consonants.push(c);
} else {
// using `i` in place of `consonants.length` here would work just as well
return arr.slice(consonants.length);
}
}
你的函数应该是这样的
arr=["h","e","l","l","o"];
vowel=["a","e","i","o","u"];
consonants=[];
for (i = 0; i < arr.length; i++){
if(vowel.indexOf(arr[i]) == -1 ) {
consonants.push(arr[i]);
arr= arr.slice(consonants.length)
}else { return arr }
}
你的for循环有点不对劲,你的常量变量在你的函数中被命名为2个不同的东西…你有常量和常量
尝试数组。过滤器-像这样:
var arr=["h","e","l","l","o"],
vowel=["a","e","i","o","u"],
first_consonant_found = false;
var consonants = arr.filter(function(ele){
if (vowel.indexOf(ele) == -1 && !first_consonant_found){
first_consonant_found = true;
return false;
} else {
return true;
}
})
相关文章:
- JavaScript数组包含一个值
- 使用事件更改数组的一个元素
- 从 javascript 数组创建一个 Jquery 数组
- 使用javascript匹配字符串中数组的一个元素
- Angular2从数组创建一个列表
- 在Javascript数组或一个对象中存储多个数据所需的Tweak
- 你能给被劫持的JavaScript数组添加一个函数吗
- 从带有循环的数组中一个接一个地在画布上绘制形状
- 将图像数组从一个窗口传递到另一个窗口,并在javascript的新窗口中显示图像
- 使用拆分字符串的数组创建一个对象
- 多维数组 - 创建一个表
- Javascript使用map从一维数组创建一个二维数组
- 角度范围变量中的数组只有一个成员
- 将数组从一个函数传递到另一个函数
- 将 php 数组发送到 jquery ajax 并从该数组创建一个 each 循环
- 角度.js:如何更新数组的一个项目
- 数组最后一个单元格中不需要的对象
- Setter 函数用于动态访问数组中的字段,该数组是一个属性
- jQuery从数组扩展一个json元素
- 从两个常规数组创建一个关联数组