Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从数组中选择特定元素_Javascript_Arrays - Fatal编程技术网

Javascript 从数组中选择特定元素

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

我想解决一个棘手的问题。每当有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.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