Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带条件的循环的Javascript_Javascript_Khan Academy - Fatal编程技术网

带条件的循环的Javascript

带条件的循环的Javascript,javascript,khan-academy,Javascript,Khan Academy,我正在读汗学院关于算法的课程。我在 调用insert函数后: *值和以前在数组[0]到数组[rightIndex]中的元素应按升序排序,并存储在从数组[0]到数组[rightIndex+1]的元素中。为此,insert函数需要通过将大于value的项向右移动来为value腾出空间。它应该从rightIndex开始,并在找到小于或等于value的项时停止,或者在到达数组的开头时停止。一旦函数为值腾出空间,它就可以将值写入数组 我的尝试是: var insert = function(array,

我正在读汗学院关于算法的课程。我在

调用insert函数后: *值和以前在数组[0]到数组[rightIndex]中的元素应按升序排序,并存储在从数组[0]到数组[rightIndex+1]的元素中。为此,insert函数需要通过将大于value的项向右移动来为value腾出空间。它应该从rightIndex开始,并在找到小于或等于value的项时停止,或者在到达数组的开头时停止。一旦函数为值腾出空间,它就可以将值写入数组

我的尝试是:

var insert = function(array, rightIndex, value) {

var i = rightIndex;
    for( array[i]> key ; 0; i-- ) {

        array[i + 1] = array[i]; 
   } 
   array[i]= value;

};

var array = [3, 5, 7, 11, 13, 2, 9, 6];

insert(array, 4, 2);
println("Array after inserting 2:  " + array);

他们明确地说他们希望在for循环中有一个条件,但我不知道怎么做。

你能解释一下这个挑战要求什么吗?我已经把这个算法问题读了100遍了,但它仍然毫无意义。rightIndex的目的是什么?这就像是一个醉汉写的。哈哈。它基本上是说你想在数组中插入一个数字,所以你要做的是检查“value”,并将该数字与数组中的所有数字进行比较。一旦它得到一个大于您的“值”的数字,它就会停止并将自身插入数组。rightIndex的目的是从rightIndex开始,当它发现一个小于或等于值的项时停止。谢谢,我不知道你可以在JS中这样做。你能解释一下这个挑战要求什么吗?我已经把这个算法问题读了100遍了,但它仍然毫无意义。rightIndex的目的是什么?这就像是一个醉汉写的。哈哈。它基本上是说你想在数组中插入一个数字,所以你要做的是检查“value”,并将该数字与数组中的所有数字进行比较。一旦它得到一个大于您的“值”的数字,它就会停止并将自身插入数组。rightIndex的目的是从rightIndex开始,当它发现一个小于或等于value的项时停止。谢谢你,我不知道你可以在js中这样做
 var insert = function(array, rightIndex, value) {
    // for( initial_value; condition; change the value for next iteration)
    // && - returns true only when both are true.
     for(var j = rightIndex; j >= 0 && array[j] > value; j--) {
        array[j + 1] = array[j];
    }
    array[j + 1] = value; 

};