JavaScript将奇数位和偶数位两两相减

(100) [0.105, -0.147, 0.216, -0.173, 0.162, -0.173, 0.156, -0.177, 0.435, -0.246, 0.351, -0.432, 0.236, -0.418, 0.306, -0.304, 0.38, -0.184, 0.346, -0.302, 0.237, -0.298, 0.184, -0.205, 0.117, -0.282, 0.247, -0.135, 0.455, -0.188, 0.113, -0.435, 0.253, -0.155, 0.373, -0.153, 0.256, -0.182, 0.446, -0.257, 0.375, -0.368, 0.424, -0.053, 0.116, -0.181, 0.144, -0.295, 0.295, -0.334, 0.184, -0.312, 0.069, -0.172, 0.194, -0.436, 0.409, -0.096, 0.236, -0.213, 0.174, -0.361, 0.19, -0.257, 0.363, -0.242, 0.383, -0.113, 0.517, -0.409, 0.26, -0.404, 0.343, -0.296, 0.181, -0.114, 0.443, -0.173, 0.356, -0.302, 0.278, -0.33, 0.2, -0.137, 0.255, -0.297, 0.267, -0.32, 0.205, -0.133, 0.168, -0.267, 0.107, -0.057, 0.192, -0.122, 0.124, -0.107, 0.52, -0.135]

JavaScript将奇数位和偶数位两两相减
例如[1,2,3,4,5,6] => [1-2,3-4,5-6] => [-1,-1,-1]

参考GPT和自己的思路:

可以使用 JavaScript 的循环和数组操作来将奇数位和偶数位两两相减。下面是一个详细的代码示例:

let arr = [0.105, -0.147, 0.216, -0.173, 0.162, -0.173, 0.156, -0.177, 0.435, -0.246, 0.351, -0.432, 0.236, -0.418, 0.306, -0.304, 0.38, -0.184, 0.346, -0.302, 0.237, -0.298, 0.184, -0.205, 0.117, -0.282, 0.247, -0.135, 0.455, -0.188, 0.113, -0.435, 0.253, -0.155, 0.373, -0.153, 0.256, -0.182, 0.446, -0.257, 0.375, -0.368, 0.424, -0.053, 0.116, -0.181, 0.144, -0.295, 0.295, -0.334, 0.184, -0.312, 0.069, -0.172, 0.194, -0.436, 0.409, -0.096, 0.236, -0.213, 0.174, -0.361, 0.19, -0.257, 0.363, -0.242, 0.383, -0.113, 0.517, -0.409, 0.26, -0.404, 0.343, -0.296, 0.181, -0.114, 0.443, -0.173, 0.356, -0.302, 0.278, -0.33, 0.2, -0.137, 0.255, -0.297, 0.267, -0.32, 0.205, -0.133, 0.168, -0.267, 0.107, -0.057, 0.192, -0.122, 0.124, -0.107, 0.52, -0.135];

let subArr = [];
for (let i = 0; i < arr.length; i+=2) {
  if (i+1 < arr.length) {
    subArr.push(arr[i] - arr[i+1]);
  }
}

console.log(subArr); // [-0.252, 0.389, -0.335, 0.339, 0.294, -0.333, 0.332, -0.621, 0.597, -0.098, 0.673, -0.668, -0.182, 0.108, 0.076, -0.483, 0.162, 0.044, 0.053, -0.121, 0.66, -0.09, 0.322, -0.102, 0.236, -0.38, 0.412, -0.352, -0.617, 0.206, 0.16, -0.526, 0.22, 0.409, -0.335, 0.688, -0.633, 0.673, 0.076, -0.32, 0.078, -0.036, -0.128, -0.063, 0.589, -0.589, -0.146, 0.34, -0.396, 0.07, 0.185, -0.31, 0.047, -0.136, 0.12, -0.18, 0.192, -0.404, 0.109];

在上面的代码中,我们使用了一个 for 循环遍历了原始数组 arr 中的每一个元素。我们利用 i+=2 让循环跳过偶数位,这样我们就可以依次处理每两个相邻的奇数位。在每次循环中,我们使用 arr[i] - arr[i+1] 来计算当前两个奇数位的差异,并将差值添加到一个新数组 subArr 中。在最后一步,我们输出了 subArr,这是两两相邻奇数位的差异数组。

个人思路:
1、将数组拆成2个数组,一个数组元素是奇数位,一个数组元素是偶数位
2、比较两个数组长度,用数组长的循环,取出对应下标的值计算
例如:

const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]

// 奇数位数组[1, 3, 5, 7, 9]
const oddArr = arr.filter((i, idx) => idx % 2 === 0)
// 偶数位数组[2, 4, 6, 8]
const evenArr = arr.filter((i, idx) => idx % 2 !== 0)

//计算结果[1, 1, 1, 1, -9]
consr result = oddArr.map((i, idx) => (evenArr[idx] || 0) - i)