Javascript 如何操作数组的元素

Javascript 如何操作数组的元素,javascript,arrays,Javascript,Arrays,我必须操作一个4个元素的数组,计算相邻元素之间的差异,并创建一个具有结果差异的新数组。最后一个元素应与第一个元素共存 例如: firstArray=[0,1,2,3]; secondArray = newArray(); 第二个阵列将是: secondArray[0]: 1-0 = 1 secondArray[1]: 2-1 = 1 secondArray[2]: 3-2 = 1 secondArray[3]: 3-0 = 3 因此,新数组应该是secondArray=[1,1,1,3] 我

我必须操作一个4个元素的数组,计算相邻元素之间的差异,并创建一个具有结果差异的新数组。最后一个元素应与第一个元素共存

例如:

firstArray=[0,1,2,3];
secondArray = newArray();
第二个阵列将是:

secondArray[0]: 1-0 = 1
secondArray[1]: 2-1 = 1
secondArray[2]: 3-2 = 1
secondArray[3]: 3-0 = 3
因此,新数组应该是
secondArray=[1,1,1,3]

我尝试使用for循环来执行此操作,但是当第三个数组要运行时,它总是运行firstArray[3]-secondArray[0]。。。何时应为fistArray[3]-firstArray[0]

如何操作firstArray以将其与新创建的secondArray区分开来

谢谢大家!

在您的循环中:

if (i == 3)
firstArray[i] - firstArray[0];
在您的循环中:

if (i == 3)
firstArray[i] - firstArray[0];

在您的示例中,您从未说过任何关于第三个数组的内容

这就是你想做的吗

secondArray[0] = firstArray[1]-firstArray[0];
secondArray[1] = firstArray[2]-firstArray[1];
secondArray[2] = firstArray[3]-firstArray[2];
secondArray[3] = firstArray[0]-firstArray[3];
如果处于循环中,则表达式可能为

secondArray[i] = firstArray[(i+1)%arrayLength]-firstArray[i];
更新:

secondArray[i] = Max(firstArray[(i+1)%arrayLength],firstArray[i]) - Min(firstArray[(i+1)%arrayLength],firstArray[i]);

使用Max和Min将得到两个元素中的较大值和较小值。这有帮助吗?

在您的示例中,您从未说过任何关于第三个数组的内容

这就是你想做的吗

secondArray[0] = firstArray[1]-firstArray[0];
secondArray[1] = firstArray[2]-firstArray[1];
secondArray[2] = firstArray[3]-firstArray[2];
secondArray[3] = firstArray[0]-firstArray[3];
如果处于循环中,则表达式可能为

secondArray[i] = firstArray[(i+1)%arrayLength]-firstArray[i];
更新:

secondArray[i] = Max(firstArray[(i+1)%arrayLength],firstArray[i]) - Min(firstArray[(i+1)%arrayLength],firstArray[i]);
使用Max和Min将得到两个元素中的较大值和较小值。这有帮助吗?

试试这个:

var firstArray = [0,1,2,3],
    secondArray = [];
firstArray.forEach(function(val, i, arr) {
    secondArray[i] = arr[(i+1)%arr.length] - val;
});

编辑不带
forEach的解决方案

for (var i=0; i<firstArray.length; ++i) {
    secondArray[i] = firstArray[(i+1)%firstArray.length] - firstArray[i];
}
for(var i=0;i试试这个:

var firstArray = [0,1,2,3],
    secondArray = [];
firstArray.forEach(function(val, i, arr) {
    secondArray[i] = arr[(i+1)%arr.length] - val;
});

编辑不带
forEach的解决方案

for (var i=0; i<firstArray.length; ++i) {
    secondArray[i] = firstArray[(i+1)%firstArray.length] - firstArray[i];
}
for(变量i=0;i
input=[1,4,19,-55,20];
函数f(a){
下一个功能(a){
变量t=[],l=a.长度;
对于(变量i=1;i
输入=[1,4,19,-55,20];
函数f(a){
下一个功能(a){
变量t=[],l=a.长度;
对于(变量i=1;i
最后一个不应该是
0-3=-3
?什么是
[1,4,19,-55,20]
give?@red:你能用我在回答中使用的符号描述一下每个结果吗?我对你写的方式有点困惑。在我看来,你好像想让第n-1个元素减去第0个元素,这似乎打破了你的模式。@KennyTM使用你的数组,得到的数组应该是:[3,15,74,75,19]在两个相邻的数字之间,差应该始终是较大的数字减去较小的数字的结果。@BreastedWithFormsDesigner:使用KennyTM给出的示例,使用该数组我应该生成如下序列:[1,4,19,-55,20][3,15,74,75,19][12,59,1,56,16][47,58,55,40,4][11,3,15,36,43]对不起,如果我的问题不清楚,那么最后一个LOT不应该是
0-3=-3
?什么是
[1,4,19,-55,20]
give?@red:你能用我在回答中使用的符号描述一下每个结果吗?我对你写的方式有点困惑。在我看来,你好像想让第n-1个元素减去第0个元素,这似乎打破了你的模式。@KennyTM使用你的数组,得到的数组应该是:[3,15,74,75,19]在两个相邻的数字之间,差应该始终是较大的数字减去较小的数字的结果。@BreastedWithFormsDesigner:使用KennyTM给出的示例,使用该数组我应该生成如下序列:[1,4,19,-55,20][3,15,74,75,19][12,59,1,56,16][47,58,55,40,4][11,3,15,36,43]很抱歉,如果我的问题不清楚,thx a lotQuestion states
fistArray[3]-firstArray[0]
,您可以从另一个角度来回答…question states
fistArray[3]-firstArray[0]
,反过来说……forEach只在某些浏览器中有效,您的解决方案可能也支持IE。+1正因为如此。最低公分母思想会让您只看太阳,吃麦当劳。走出阴沟。forEach只在某些浏览器中有效,您的解决方案可能也支持IE因为这个原因,最低公分母的想法会让你只看《太阳报》和吃麦当劳。走出阴沟。