gpt4 book ai didi

javascript - 尝试从另一个数组创建重复值的数组,为什么我的代码不起作用?

转载 作者:行者123 更新时间:2023-12-03 02:04:19 26 4
gpt4 key购买 nike

我正在这里处理这段代码,其目标是创建一个包含从另一个数组重复的所有值的数组。我想要的结果数组应该只输入第一个数组中的重复值一次。 问题是我无法使用任何数组函数或方法。这是我到目前为止所拥有的:

var numbers = [8,24,20,5,13,3,1,12,11,24,8,24,20,4,5,23,24,23,21,2,19,3,21,2,14,17,21,5,7,10,20,11,0,5,18,2,13,11,14,3,20,1,23,6,21,10,14,0,15,20];

var results = [];
var tempArr = [];

for (var i = 0; i <= numbers.length; i++) {
if (tempArr[numbers[i]] === undefined) {
tempArr[numbers[i]] = 1;
} else if (results[numbers[i]] === undefined) {
results.push(numbers[i]);
}
}

console.log(tempArr);
console.log(results);

我越来越接近我想要的输出......但由于某种原因,结果数组继续包含数字数组中重复的值的多个条目。我哪里出错了?

最佳答案

您基本上是在滥用数组作为对象。尝试使用对象来记录您的值(并为该对象指定一个代表其所包含内容的名称),它将大大简化您的代码:

var numbers = [8,24,20,5,13,3,1,12,11,24,8,24,20,4,5,23,24,23,21,2,19,3,21,2,14,17,21,5,7,10,20,11,0,5,18,2,13,11,14,3,20,1,23,6,21,10,14,0,15,20];

var results = [];
var seenValues = {};

for (var i = 0; i < numbers.length; i++) {
const number = numbers[i];
seenValues[number] = 1 + (seenValues[number] || 0);
// check to see if it's been seen exactly once before,
// so that the duplicated value is only added once:
if (seenValues[number] === 2) results[results.length] = number;
}

//console.log(seenValues);
console.log(results);

关于javascript - 尝试从另一个数组创建重复值的数组,为什么我的代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49868026/

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