Webフロントエンド09:よくある配列練習問題


はいれつデポジット
            //     
            function quchong(arr){
               
                for(i=0;i<arr.length;i++){
                    for(j=1+i;j<arr.length;j++){
                        if(arr[i]==arr[j]){
                            arr.splice(j,1)
                            j--;
                            arr.length--;
                        }
                    }
                }
                return arr;
            }
            var arr1 = [1,2,3,4,2,1,1,1]
            document.write(quchong(arr1))
            document.write("
"
) // :[1,2,3,4]

配列内の要素の位置を特定
function indexOf(arr, item) {
    if(Array.prototype.indexOf){ //         indexOf  
        return arr.indexOf(item);
    }else{
        for(var i=0; i<arr.length; i++){
            return i;
        }
    }
    return -1;
}
console.log("3   [1,2,3,4]    :"+ indexOf([1,2,3,4],3)); 
//3   [1,2,3,4]    :2

配列内の要素の和の1つ目を計算します.
function sum(arr){
     return eval(arr.join("+"));
 }
 console.log("      :"+ sum([1,2,3])); //      :6


2つ目:
            var sum =0;
            function he(arr2){
                for(i=0;i<arr2.length;i++){
                    sum=sum+arr2[i]
                }
                return sum
            }
            var arr=[1,2,3,4]
            document.write(he(arr))
            document.write("
"
)

配列arrのすべての値がitemに等しい要素を除去します.配列arrを直接変更しないで、結果は新しい配列を返します.

function remove(arr, item) {
    var a=[];
    for(var i=0; i<arr.length; i++){
        if(arr[i]!=item){
            a.push(arr[i]);
        }
    }
    return a;
}
console.log(remove([1,2,3,4,2,3],2)); 
//[ 1, 3, 4, 3 ]

配列arrのすべての値がitemに等しい要素を除去し、与えられたarr配列上で直接操作し、結果を返します.
 function removeWithoutCopy(arr,item){
     for(var i=0; i<arr.length;i++){
         if(arr[i]==item){
             arr.splice(i,1);//   1        item       1   
             i--;//splice(i,1)      ,   i   ,          
         }
     }
     return arr;
 }
 console.log(removeWithoutCopy([1,2,3,4,2,3],2));
 //[ 1, 3, 4, 3 ]

配列arrの末尾に要素itemを追加します.配列arrを直接変更しないで、結果は新しい配列を返します.
function append(arr,item){
     var a = arr.slice(0);//splice()               :arrayObj.slice(start,end);
     a.push(item);
     return a;
 }
 console.log(append([1, 2, 3, 4],  10)); 
 //[ 1, 2, 3, 4, 10 ]

配列arrの最後の要素を削除します.配列arrを直接変更しないで、結果は新しい配列を返します.
function truncate(arr){
     return arr.slice(0,arr.length-1);
 }
 console.log(truncate([1,2,3,4]));
 //[ 1, 2, 3 ]

配列arrの先頭に要素itemを追加します.配列arrを直接変更しないで、結果は新しい配列の1つ目を返します.
 function prepend(arr,item){
     var a = arr.slice(0); //unshift()                   ,       。arrayObject.unshift(newelement1,newelement2,....,newelementX)
     a.unshift(item);
     return a ;
 }
 console.log(prepend([1,2,3,4],10));
 //[ 10, 1, 2, 3, 4 ]

2つ目:
 function prepend(arr,item){
     return [item].concat(arr);
 }
 console.log(prepend([1,2,3,4],10));
 //[ 10, 1, 2, 3, 4 ]

配列arrの最初の要素を削除します.配列arrを直接変更しないで、結果は新しい配列を返します.
function curtail(arr){
                 return arr.slice(1);
            }
console.log(curtail([1,2,3,4])); 
//[2,3,4]

配列arr 1と配列arr 2をマージします.配列arrを直接変更しないで、結果は新しい配列を返します.
 function concat(arr1,arr2){
     return arr1.concat(arr2);
 }
 console.log(concat([1, 2, 3, 4], ['a', 'b', 'c', 1]));
 //[ 1, 2, 3, 4, 'a', 'b', 'c', 1 ]

配列arrのindexに要素itemを追加します.配列arrを直接変更しないで、結果は新しい配列を返します.
 function insert(arr,item,index){
     return arr.slice(0,index).concat(item,arr.slice(index));
 }
 console.log(insert([1,2,3,4],'z',2));
 //[ 1, 2, 'z', 3, 4 ]

統計配列arrの値がitemに等しい要素が現れる回数の1つ目:
function count(arr,item){
     var cnt=0;
     for(var i=0; i<arr.length; i++){
         arr[i] == item ? cnt++ : 0;
     }
     return cnt;
 }
 console.log(count([1, 2, 4, 4, 3, 4, 3], 4));
 //3

2つ目:
            function count(arr, item) {
                var cnt=0;
                for (var i = 0;i<arr.length;i++){
                    if (arr[i]===item){
                        cnt++;
                    }
                }
                return cnt;
            }

配列arrで繰り返される要素の1つ目を見つけます.
//         ,                    ,          。
            function duplicates(arr) {
                var newArr=[];
                arr.sort();
                for(var i =0;i<arr.length;i++){
                    if(arr[i]==arr[i+1]&&(newArr.indexOf(arr[i])==-1) ){
                        newArr.push(arr[i]);
                        i++;

                    }
                }

                return newArr;
            }

2つ目:
 function duplicates(arr) {
     //      ,a        ,b      arr        
     var a = [],b = [];
     //  arr,   arr       b     ,  b   1,     1
     for(var i = 0; i < arr.length; i++){
         if(!b[arr[i]]){
             b[arr[i]] = 1;
             continue;
         }
         b[arr[i]]++;
     }
     //  b  ,        1       a   
     for(var i = 0; i < b.length; i++){
         if(b[i] > 1){
             a.push(i);
         }
     }
     return a;
 }
 console.log(duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]));

配列arrの各要素の二次方程式を求める
            //     arr           
            function square(arr) {
                var arr2 = []
                for(var i=0; i<arr.length; i++) {
                arr2[i] = arr[i]*arr[i]
                }
                 return arr2
            }

配列arrでは、itemに等しい値の要素が現れるすべての場所を検索します.
            function findAllOccurrences(arr, target) {
                var arr1=[];
                var j=0;
                for(var i=0;i<arr.length;i++){
                    if(arr[i]===target){
                        arr1.push(arr.indexOf(arr[i],j));
                        j++;
                    }
                }
                return arr1;
            }