用js:字符串数组中每一项的长度。将字符串数组用 | 符号分割。有序数组插入排序插入数组。猴子选大王

1.字符串数组中每一项的长度

代码:

<script>
var arr = ['hello', 'world!', 'nice', 'to', 'meet', 'you'];
     var newarr = [];
     for (var i = 0; i < arr.length; i++) {
           newarr[newarr.length] = parseInt(arr[i].length);
       }
      console.log(newarr);
        
    </script>

可以用push:

<script>
        /*
         * 求字符串数组中每一项的长度
         */
        var arr = ['你', '今天', '真好看', ',nice!', '今天是周五'];
        var arr_length = [];
        for (var v of arr) {
            arr_length.push(v.length);
        }
        console.log(arr_length);
</script>

2.将字符串数组用 | 或其他符号分割

代码:

<script>
         var arr = ['hello', 'world!', 'nice', 'to', 'meet', 'you'];
            var separator = '|';
            var a = arr[0];
            for (var i = 1; i <= arr.length; i++) {
                a += separator + arr[i];
            }
            console.log(a);

    </script>

可以用其他算法:

<script>
        var arr = ['fasdfdsfdsf', 'fasdfdsaf', 'fdsafdsf', 'dfsf', '明天是周六'];
            var arr_str = '';
             for (var i in arr) {
                   
                    var str_unit = '';
                    if (i < arr.length - 1) {
                        str_unit = '|';
                    }
                    if (i < arr.length - 1) str_unit = '|';
                    arr_str += arr[i] + str_unit;
                }
                 console.log(arr_str);


    </script>

或者:

 <script>
        var arr = ['fasdfdsfdsf', 'fasdfdsaf', 'fdsafdsf', 'dfsf', '明天是周六'];
        var arr_str = '';
        for (var i in arr) {
            if (i == arr.length - 1) {
                arr_str += arr[i];
            } else {
                arr_str += arr[i] + '|';
            }  
            console.log(arr_str);
        
        }
    </script>

用三目运算法:

<script>
        var arr = ['fasdfdsfdsf', 'fasdfdsaf', 'fdsafdsf', 'dfsf', '明天是周六'];
        var arr_str = '';
        for (var i in arr) {
            arr_str += arr[i] + (i == arr.length - 1 ? '' : '|');
        }
        console.log(arr_str);
        
    </script>

3.有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中.用插入排序法

代码:

<script>
         var arr = [2, 40, 54, 56, 66, 75, 78, 79, 89, 90, 99, 999];
            var a = Number(prompt('请输入要加入的数'));
            arr.push(a);
            for (var n = 1; n < arr.length; n++) {
                nowVal = arr[n];
                _index = n - 1;
                while (_index >= 0 && nowVal < arr[_index]) {
                    arr[_index + 1] = arr[_index];
                    _index--;
                }
                arr[_index + 1] = nowVal;
            }
            console.log(arr);
        

    </script>

优化一下:他只进行了最后一次排序所以可以:

 <script>
         var arr = [20, 35, 49, 59, 67, 70, 98, 100];
            var num = +prompt('请输入您要插入数组中的数:');
            if (num < arr[0]) {
                arr.unshift(num);
            } else {
                arr.push(num);
                var nowVal, _index;
                for (var n = 8; n < arr.length; n++) {
                    // 当前值保存
                    nowVal = arr[n];
                    // 上一个元素的下标值
                    _index = n - 1;
                    // 当前值跟前面每个值作比较
                    // 直到找到比前面数大的位置
                    while (_index >= 0 && nowVal < arr[_index]) {
                        arr[_index + 1] = arr[_index];
                        _index--;
                    }
                    // 找到前面的数的下标值
                    // 下标值 + 1 就是这个数的位置
                    // 把这个值放到当前的位置
                    arr[_index + 1] = nowVal;
                }
            }
            console.log(arr);
    </script>

4.猴子选大王

要求一群猴子排成一圈,按“1,2,……,n”依次编号。然后从第1只开始数,数到第m只,

        把它踢出圈,其后的猴子再从1开始数,数到第m只,再把它踢出去……,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就是我们要找的大王。

         - 假设n(猴子总数):8、m(踢出圈的):3

         - 第一圈:踢出的猴子编号为3、6,位置编号为3、6。

         - 第二圈:踢出的猴子编号为1、5,位置编号为9、12。

         - 第三圈:踢出的猴子编号为2、8,位置编号为15、18。

         - 第四圈:无。

         - 第五圈:踢出的猴子编号为4,位置编号为21。

         - 得出猴王编号:7。

         - 通过prompt()接收用户传递的猴子总数n和踢出的第m只猴子。

         - 利用数组保存所有猴子的编号(1~n)。

         - 设置一个变量i,记录每次参与游戏(报数)的猴子位置。

         - 通过while循环,只要猴子数组内元素个数大于1,就继续循环。

         - 在循环中判断当前猴子的位置i与m求余是否为0,若为零,删除该数组元素。

代码如下:    代码注释有详解

其中考虑以下条件;1.每轮要踢出去第一只猴子时,大王是最后一个猴子

当剩余猴子大于两个就继续循环。踢出

 <script>
        var sum_monkey = Number(prompt('请输入猴子总数'));
            var out_monkey = Number(prompt('请输入每轮要踢出去第几只猴子'));
            var arr = [];
            for (var i = 1; i <= sum_monkey; i++) {
                arr.push(i);
            }//得到一群排序的猴子
            i = 0;//每次报数的猴子
            if (out_monkey == 1) {
                //每轮要踢出去第一只猴子时,大王是最后一个猴子
                console.log('猴子大王是:' + arr[arr.length - 1]);
            } else {
                while (arr.length > 1) {//只有当猴子大于一只时,才会进行踢出去的操作
                    ++i;//相当于指针和猴子位置编号。会大于总猴子数
                    head = arr.shift();//从每轮第一只猴子取出,为了判断是否需要踢出。
                    if (i % out_monkey != 0) {//取出的这只猴子编号,与要踢出的求余,等于0,要踢出。不等则放末尾,参与下一轮
                        arr.push(head);
                    }


                }

                console.log('猴子大王是:' + arr[0]);
            } 
        

    </script>


版权声明:本文为m0_53881313原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。