javascript - Rechercher des éléments qui apparaissent plusieurs fois dans un tableau à deux dimensions
phpcn_u1582
phpcn_u1582 2017-05-19 10:47:27
0
3
605
var arr=new Array(["A","B"],["C","D"],["E","F"],["A","C"],["D","F"],["E","A"],["A","F"]);
var output_arr=new Array();
//找出出现过三次及以上的元素,写入到output_arr这个一维数组中
//"A"出现了4次,"F"出现了3次
output_arr = ["A","F"];
phpcn_u1582
phpcn_u1582

répondre à tous(3)
给我你的怀抱

Donnez-vous une référence- -

let arr = new Array(["A", "B"], ["C", "D"], ["E", "F"], ["A", "C"], ["D", "F"], ["E", "A"], ["A", "F"]);
let result = [],list = {},output_arr = [];

Calculez le nombre d'occurrences d'éléments et filtrez les éléments qui remplissent les conditions

  for (let [val1, val2] of arr) {
    result.push(val1, val2);
  }
  for (let val of result) {
    list[val] ? list[val] += 1 : list[val] = 1;
    if (list[val] === 3) { //出现3次以上的元素
      output_arr.push(val); //装进数组
    }
  }

Voir les résultats

  console.log(output_arr);
迷茫

La solution ES5 est donnée ici, et la compatibilité ES5 sera meilleure.

Le code implémenté est le suivant, avec des commentaires spécifiques :

var arr = new Array(["A","B"],["C","D"],["E","F"],["A","C"],["D","F"],["E","A"],["A","F"]);
var output_arr = new Array();

// 处理函数
function filterWord(arr){
    
    // 先定义一个对象
    var tempObject = {};

    // 两层for循环,获得数组的每个元素    
    var arrLength = arr.length;
    for(var i = 0; i < arrLength; i++){

        var arrItemLength = arr[i].length;
        for(var j = 0; j < arrItemLength; j++){
            
            // 获得数组的元素
            var temp = arr[i][j];

            // 判断是否已经存在于对象中
            if(temp in tempObject){
                // 如果存在,那么计数加一
                tempObject[temp]++;
            }else{
                // 如果不存在,就新创建,并且计数为1
                tempObject[temp] = 1;
            }
        }
    }

    // 将计数大于等于3的加入数组
    var resultArr = [];
    for(var item in tempObject){
        if(tempObject[item] >= 3){
            resultArr.push(item);
        }
    }
    return resultArr;
}

output_arr = filterWord(arr);
console.log(output_arr);

Résultat de sortie :

["A", "F"]

Voici quelques suggestions. J'espère que le sujet sera familier avec les objets en JavaScript et les méthodes de parcours et de traitement des objets.
Dans cette question, le sujet peut tester le résultat de la sortie de tempObject. Les résultats sont les suivants :

{
    A: 4
    B: 1
    C: 2
    D: 2
    E: 2
    F: 3
}
Peter_Zhu

Donnez-moi une solution pour ES6 :

let arr = new Array(["A","B"],["C","D"],["E","F"],["A","C"],["D","F"],["E","A"],["A","F"]);

let conatiner = [].concat(...arr).sort();
let dictionary = [...new Set(conatiner)];
let retArr = dictionary.filter((val, idx) => (
    (conatiner.lastIndexOf(val) - conatiner.indexOf(val) + 1) >= 3
));
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal