gpt4 book ai didi

Javascript:移动二维数组

转载 作者:行者123 更新时间:2023-11-28 09:06:27 25 4
gpt4 key购买 nike

我通过以下方式创建了一个示例数组:

var data = new Array(8);
...
data[n].push([x, y]);

其中 n 是 channel (0-7),[x, y] 是所选 channel 的当前样本。对于特定应用程序,我需要保持 x 值不变(0, 1, 2, 3, ... m),并在每次获得新样本时移动 y 值。

一个简单的例子,m = 3。第一次加载后我有:

data[0] -> [0, 2] [1, 4] [2, 6]

当收到新样本时,我想像这样更改数组:

data[0] -> [0, 4] [1, 6] [2, 8]

因为 m 的值可能高达 5000,所以我想知道哪种方法是执行此操作的最佳方法。当然,我可以循环整个数组,将位置 j 的 y 值更改为位置 j+1 的 y 值。

还有更好的吗?谢谢!

最佳答案

您可以使用Array.map无需显式循环即可更改数组中的每个项目。

var data = [
[0,2], [1,4], [2,6]
];

function update(data) {
data.map(function(item,key) {
if(key+1>data.length-1) return;
data[key][1] = data[key+1][1];
});
// if we shift, the last item Y should have empty value
data[data.length-1][1] = undefined;
}

update(data);

console.log(data); // [0,4], [1,6], [2,undefined]

参见the fiddle .

您可能还喜欢评论中受 @rab 解决方案启发的黑魔法

var data = [ [0,2], [1,4], [2,6] ];
data.map(function(_,i,o){o[i][1]=o[++i]&&o[i][1]});
console.log(data); // [0,4], [1,6], [2,undefined]

关于Javascript:移动二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16997530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com