【发布时间】:2021-06-13 13:48:56
【问题描述】:
我有一个数组如下:
[[3, 4], [1, 2], [3, 4]]
我希望创建一个没有重复的数组的新数组,并且计算第一个数组中每个元素的出现次数:
[[3,4,2], [1,2,1]]
这是我目前所拥有的:
var alreadyAdded = 0;
dataset.forEach(function(data) {
From = data[0];
To = data[1];
index = 0;
newDataSet.forEach(function(newdata) {
newFrom = newData[0];
newTo = newData[1];
// check if the point we are looking for is already added to the new array
if ((From == newFrom) && (To == newTo)) {
// if it is, increment the count for that pair
var count = newData[2];
var newCount = count + 1;
newDataSet[index] = [newFrom, newTo, newCount];
test = "reached here";
alreadyAdded = 1;
}
index++;
});
// the pair was not already added to the new dataset, add it
if (alreadyAdded == 0) {
newDataSet.push([From, To, 1]);
}
// reset alreadyAdded variable
alreadyAdded = 0;
});
我对 Javascript 很陌生,有人可以帮我解释一下我做错了什么吗?我确信有一种更简洁的方法可以做到这一点,但是我无法在 javascript 中找到处理重复数组数组的示例。
【问题讨论】:
-
[3, 4]和[4, 3]会被视为相同还是顺序很重要? -
您能澄清一下您期望的结果吗?我不明白你是怎么得到
[[3,4,2], [1,2,1]] -
[3,4]似乎与[4,3]不同。如果您正在查看 OP 代码中使用的变量,它看起来每个数组只包含两个元素,第一个是某物在事件之前的位置,最后一个是它在事件之后的位置。因此,从3移动到4与从4移动到3不同。
标签: javascript arrays