Javascript 从数组中选择特定元素
我想解决一个棘手的问题。每当有3行在一起时(例如3A、3B和3C),我想增加变量“count”。我的逻辑只对第一行有效,但对其余行无效。这个问题的答案应该是3。有人能在这里说明一下吗Javascript 从数组中选择特定元素,javascript,arrays,Javascript,Arrays,我想解决一个棘手的问题。每当有3行在一起时(例如3A、3B和3C),我想增加变量“count”。我的逻辑只对第一行有效,但对其余行无效。这个问题的答案应该是3。有人能在这里说明一下吗 function doThis() { var everySeat = [1A, 1B, 1C, 2A, 2C, 3A, 3B, 3C, 151A, 151B, 151C, 152B, 152C]; var count; for (i = 1; i <= everySeat.leng
function doThis() {
var everySeat = [1A, 1B, 1C, 2A, 2C, 3A, 3B, 3C, 151A, 151B, 151C, 152B, 152C];
var count;
for (i = 1; i <= everySeat.length; i++) {
if (everySeat[i-1] = i + ‘A’ && everySeat[i] = i + ‘B’ && everySeat[i+1] = i + ‘C’) {
count++;
}
}
}
doThis();
函数doThis(){
var everySeat=[1A、1B、1C、2A、2C、3A、3B、3C、151A、151B、151C、152B、152C];
var计数;
对于(i=1;i首先,数组有语法错误。所以请尝试下面的代码
var everySeat = ['1A', '1B', '1C', '2A', '2C', '3A', '3B', '3C', '151A', '151B', '151C', '152B', '152C'];
var count =0;
for(var i =0; i < everySeat.length ; i++ ){
if(everySeat[i] == i + 'A' && everySeat[i+1] == i + 'B' && everySeat[i+2] == i + 'C' ){
count++;
}
}
console.log(count);
var everysat=['1A','1B','1C','2A','2C','3A','3B','3C','151A','151B','151C','152B','152C'];
var计数=0;
for(var i=0;i
扩展解决方案,带有数组.slice()
和字符串.match()
函数:
var everysat=['1A','1B','1C','2A','2C','3A','3B','3C','151A','151B','151C','152B','152C'],
计数=0;
for(变量i=0,l=everysat.length;i
试试这个。效果很好
function doThis() {
var everySeat = ['1A', '1B', '1C', '2A', '2C', '3A', '3B', '3C', '151A', '151B', '151C', '152B', '152C'];
var count = 0;
for (var i = 1; i <= everySeat.length-2; i++) {
var prefix = parseInt(everySeat[i-1]);
if (everySeat[i-1] == prefix + 'A' && everySeat[i] == prefix + 'B' && everySeat[i+1] == prefix + 'C') {
count++;
}
}
return count;
}
函数doThis(){
var everySeat=['1A','1B','1C','2A','2C','3A','3B','3C','151A','151B','151C','152B','152C'];
var计数=0;
对于(var i=1;i,您可以将其转换为字符串,然后匹配所需的子字符串
var everySeat = ['1A', '1B', '1C', '2A', '2C', '3A', '3B', '3C', '151A', '151B', '151C', '152B', '152C'];
var str = everySeat.toString();
var count1 = (str.match(/3A,3B,3C/g) || []).length;
console.log(count1);
您可以使用一个哈希表来计算行数,如果一行的计数为3,则可以添加一个哈希表
此建议也适用于未排序的数据
var数组=['1A','1B','1C','2A','2C','3A','3B','3C','151A','151B','151C','152B','152C'],
count=Object.create(空),
结果=数组.reduce(函数(r,s){
var key=s.match(/\d+/)[0];
计数[键]=(计数[键]| 0)+1;
返回r+(计数[键]==3);
}, 0);
console.log(result);
如果
条件和一个不是语法错误的数组,你应该在中使用比较运算符=
?我会对seat[a,B,C][Number]使用二维数组示例:everysat[a][1,2,3,4,…]everysat[B][1,2,3,4,…]更少混乱;)数组中有一些项,151和152
值永远不会与循环的条件匹配。在进行过程中记录值将有助于您了解发生了什么。第一个条件匹配,因为循环值匹配1。当您获得要匹配的后续值,如3
,您的i
现在是6
,因此您将3A(everySeat[i-1]
)与6A(i+“A”
)进行比较我还想补充一点,for循环应该一直持续到everysat.length-2,就目前情况而言,您将尝试访问不存在的元素。只有当他知道他要匹配3A、B和C并且没有解决问题时,这些元素才起作用。仔细想想,答案应该是3,不是for(var I=1;I