Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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_Arrays - Fatal编程技术网

Javascript 添加到阵列同级

Javascript 添加到阵列同级,javascript,arrays,Javascript,Arrays,我有一个包含10项的数组: |0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 每个数组包含一个0的整数 我要做的是在索引4中添加一个值10。然后让3个外部索引接收减半的值。下面是一个直观的示例: |0 | 1.25 | 2.5 | 5 | 10 | 5 | 2.5 | 1.25 | 0 | 所以无论我选择什么索引,都会得到10的值。左侧和右侧的第一个项目将获得该值/2,其他外部项目将获得该值/4,以此类推 var indexesToCheck = 3; // Will check

我有一个包含10项的数组:

|0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

每个数组包含一个0的整数

我要做的是在索引4中添加一个值10。然后让3个外部索引接收减半的值。下面是一个直观的示例:

|0 | 1.25 | 2.5 | 5 | 10 | 5 | 2.5 | 1.25 | 0 |

所以无论我选择什么索引,都会得到10的值。左侧和右侧的第一个项目将获得该值/2,其他外部项目将获得该值/4,以此类推

var indexesToCheck = 3; // Will check 3 before and 3 after the selected index
var array = [];
var arrayItems = 10;

for(var i = 0; i < arrayItems.length; i++) {
  array.push(0);
}

function setArrayValue(i, value) {
  array[i] = value;

  // How do I go about checking the next and previous 3 values and setting the halved value?
}

setArrayValue(4, 10);
var indexesToCheck=3;//将在选定索引之前和之后选中3
var数组=[];
var arrayItems=10;
对于(var i=0;i
如果能朝着正确的方向努力,我们将不胜感激


谢谢大家!

可以使用两个指针,分别递增和递减,直到它们到达数组边界

var indexesToCheck=3//将在选定索引之前和之后选中3
//您不需要上面的变量
var数组=[];
var arrayItems=10;
对于(变量i=0;i=0){
数组[pointer1]=值/2;
值=值/2;
指针1--;
}
值=原始值;
while(指针2console.log(数组)您可以使用两个指针,分别递增和递减,直到它们到达数组边界

var indexesToCheck=3//将在选定索引之前和之后选中3
//您不需要上面的变量
var数组=[];
var arrayItems=10;
对于(变量i=0;i=0){
数组[pointer1]=值/2;
值=值/2;
指针1--;
}
值=原始值;
while(指针2console.log(数组)每次可以迭代并将前一个数字除以2,然后向上写入下一个索引,向下写入下一个索引

var indexesToCheck=3;//将在选定索引之前和之后选中3
var数组=[];
var arrayItems=10;
对于(变量i=0;i-1)数组[start-i-1]=p;
如果((start+i+1)console.log(数组)每次可以迭代并将前一个数字除以2,然后向上写入下一个索引,向下写入下一个索引

var indexesToCheck=3;//将在选定索引之前和之后选中3
var数组=[];
var arrayItems=10;
对于(变量i=0;i-1)数组[start-i-1]=p;
如果((start+i+1)console.log(数组)从示例代码的外观来看,您似乎希望在适当的位置修改数组,而不是返回新的数组。以下是我的实施:

var indexesToCheck=3;
var数组=新数组(10)。填充(0);
函数setArrayValue(i,值){
数组[i]=值;

对于(让j=1;j,从示例代码的外观来看,您似乎希望就地修改数组,而不是返回新数组。下面是我的实现:

var indexesToCheck=3;
var数组=新数组(10)。填充(0);
函数setArrayValue(i,值){
数组[i]=值;

对于(让j=1;j只需将逻辑拆分为两个独立的循环。一个循环将处理给定索引左侧的值减半,另一个循环将处理右侧的值。例如:

function initializeArray(array, index, initialValue) {
    array[index] = initialValue;

    var i;

    //Handles logic going left (decreasing indices)
    var currentValue = initialValue;
    for(i = index-1; i >= 0; i--) {
        currentValue /= 2.0;
        array[i] = currentValue;
    }

    //Handles logic going right (increasing indices)
    currentValue = initialValue;
    for(i = index+1; i < array.length; i++) {
        currentValue /= 2.0;
        array[i] = currentValue;
    }
}
函数初始化数组(数组、索引、初始值){
数组[索引]=初始值;
var i;
//处理向左移动的逻辑(减少索引)
var currentValue=初始值;
对于(i=index-1;i>=0;i--){
currentValue/=2.0;
数组[i]=当前值;
}
//正确处理逻辑(增加索引)
currentValue=初始值;
对于(i=index+1;i
只需将逻辑拆分为两个单独的循环。一个循环将处理给定索引左侧的值减半,另一个循环将处理右侧的值。例如:

function initializeArray(array, index, initialValue) {
    array[index] = initialValue;

    var i;

    //Handles logic going left (decreasing indices)
    var currentValue = initialValue;
    for(i = index-1; i >= 0; i--) {
        currentValue /= 2.0;
        array[i] = currentValue;
    }

    //Handles logic going right (increasing indices)
    currentValue = initialValue;
    for(i = index+1; i < array.length; i++) {
        currentValue /= 2.0;
        array[i] = currentValue;
    }
}
函数初始化数组(数组、索引、初始值){
数组[索引]=初始值;
var i;
//处理向左移动的逻辑(减少索引)
var currentValue=初始值;
对于(i=index-1;i>=0;i--){
currentValue/=2.0;
数组[i]=当前值;
}
//正确处理逻辑(增加索引)
currentValue=初始值;
对于(i=index+1;i
一个简单的解决方案可能是

var leftIndex = 6; //Index of value
var rightIndex = 6; //Index of value 
var val = 10; //Value at Index 
var arr=[];
arr[leftIndex]=val;
while(leftIndex>0) {
    leftIndex--;
    arr[leftIndex] = arr[leftIndex+1]/2;
}
while(rightIndex<9) {
    rightIndex++;
    arr[rightIndex] = arr[rightIndex-1]/2;
}
var leftIndex=6;//的索引
pivot=4
threshold=10
indexBoundary=3

for i->3 to 1, do
    array[i] = threshold/2^(pivot-i)
i=3, array[3] = 10/2^(4-3) = 10/2 = 5
i=2, array[2] = 10/2^(4-2) = 10/4 = 2.5
i=1, array[1] = 10/2^(4-1) = 10/8 = 1.25


for i->5 to 7, do
    array[i] = threshold/2^(i-pivot)
i=3, array[3] = 10/2^(5-4) = 10/2 = 5
i=2, array[2] = 10/2^(6-4) = 10/4 = 2.5
i=1, array[1] = 10/2^(7-4) = 10/8 = 1.25