JavaScript
1// nums1は1~9までの数が重複せずに入る 2// 0は空白のつもり 3var nums1 =[ 4 [3, 0, 7, 4, 9, 0, 0, 5, 8], 5 [0, 1, 2, 3, 5, 8, 4, 7, 6], 6 [8, 5, 0, 6, 7 ,1, 3, 2, 9] 7]; 8function getNum1(arr, c) { 9 var num = [1, 2, 3, 4, 5, 6, 7, 8 ,9]; 10 var numlen = num.length; 11 var len = arr.length; 12 for (var i = 0; i < len; i++) { 13 if (arr[c][i] == 0) continue; 14 for (var j = 0, l = num.length; j < l; j++) { 15 if (num[j] == arr[c][i]) { 16 num[j] == null; 17 del_Arr(num, null); 18 break; 19 } 20 } 21 } 22 return num; 23} 24console.log(getNum1(nums1, 0)); 25// [1, 2, 3, 4, 5, 6, 7, 8, 9] 26 27function getNum2(arr, c, e) { 28 var num = [1, 2, 3, 4, 5, 6, 7, 8 ,9]; 29 var numlen = num.length; 30 var len = arr.length; 31 for (var i = 0; i < e; i++) { 32 for (var j = 0, l = num.length; j < l; j++) { 33 if (num[j] == arr[c][i]) num[j] = null; 34 } 35 } 36 del_Arr(num, null); 37 for (var i = e+1; i < len; i++) { 38 for (var j = 0, l = num.length; j < l; j++) { 39 if (num[j] == arr[c][i]) num[j] = null; 40 } 41 } 42 del_Arr(num, null); 43 return num; 44 } 45 46console.log(getNum2(nums1, 0, 1)); // 0の場所を指定している 47// [1, 2, 6] 48 49 50function delArr(arr, target) { 51 for (var i = 0, l = arr.length; i < l; i++) { 52 if (arr[i] == target) { 53 arr.splice(i, 1); 54 delArr(arr, target); 55 } 56 } 57} 58/* 59 * delArrには自信がありませんので評価をお願いしてもよろしいでしょうか...? 60 */
配列num1[i]
に存在しない数値を返すプログラムを作っているのですが、関数getNum1
のように書くと、関数内のnum
がそのまま返されてしまいます。
関数getNum2
のように存在しない数だけを返したいのですが、何が間違っているのですか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/08/26 15:58
退会済みユーザー
2016/08/26 16:27