SOURCE

// const input = '[1,2,3]';
const input = "[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]]"
const arr = JSON.parse(input);

console.log(arr)

const res = [];
for (let i=0; i<arr.length;i++){
    //标记,判断当前节点是否已经被记录(已属于已有的某个连通分量)
    let flag = false;
    //当前所指向的连通分量
    let temp = null;
    for(const x of res){
        if(x.has(i)){
            temp = x;
            flag = true;
            break;
        }
    }
    if(!flag){
        //如果未找到,则创建一个新的set:表示一个新的连通分量
        const set = new Set();
        set.add(i);
        res.push(set);
        temp = set;
    }
    for(let j=i+1;j<arr.length;j++){
        //邻接矩阵对称,所以从i+1开始
        if(arr[i][j]===1){
            //i与j直接连通,将j存储到i所属的连通分量中
            temp.add(j)
        }
    }
}
//输出结果
console.log(res.length);

console 命令行工具 X clear

                    
>
console