Javascript 是否在不使用拼接的情况下将现有阵列的元素复制到新阵列?
我目前正在为大学做一些功课。我正在尝试将旧数组的单个值复制到新数组,然后将旧数组值设置为0。显然,如果我只是将值赋给新数组,然后更改旧数组的值,它也会覆盖新数组 我不允许使用函数splice() 这是我的密码:Javascript 是否在不使用拼接的情况下将现有阵列的元素复制到新阵列?,javascript,arrays,shallow-copy,Javascript,Arrays,Shallow Copy,我目前正在为大学做一些功课。我正在尝试将旧数组的单个值复制到新数组,然后将旧数组值设置为0。显然,如果我只是将值赋给新数组,然后更改旧数组的值,它也会覆盖新数组 我不允许使用函数splice() 这是我的密码: function rankedScores(web, pattern) { var v = urlScores(web, pattern); var sorted = []; var maxIndex = 0; while (sorted.length &
function rankedScores(web, pattern) {
var v = urlScores(web, pattern);
var sorted = [];
var maxIndex = 0;
while (sorted.length < v.length) {
for (var i = 0; i < v.length; i += 1) {
if (v[i].score > v[maxIndex].score) {
maxIndex = i
}
}
sorted[sorted.length] = v[maxIndex];
v[maxIndex].score = 0;
maxIndex = 0;
}
alert(sorted[0].url + ' ' + sorted[0].score)
alert(sorted[1].url + ' ' + sorted[1].score)
alert(sorted[2].url + ' ' + sorted[2].score)
}
函数rankedScores(web、模式){
var v=urlScores(网络、模式);
var排序=[];
var-maxIndex=0;
while(排序长度v[maxIndex].score){
maxIndex=i
}
}
排序的[sorted.length]=v[maxIndex];
v[maxIndex]。分数=0;
maxIndex=0;
}
警报(已排序[0]。url+''+已排序[0]。分数)
警报(已排序[1]。url+''+已排序[1]。分数)
警报(已排序[2]。url+''+已排序[2]。分数)
}
如果我这样做,它会返回正确的URL值,但所有的分数值都是0
关于如何阻止数组指向同一内存位置,有什么想法吗
我尝试使用for循环,因为我看到这是一个浅拷贝,但它不起作用
干杯。替换:
sorted[sorted.length] = v[maxIndex];
v[maxIndex].score = 0;
与:
当然,您还没有说明对象的深度-我假设它们是简单的
key:value
贴图,但这应该足以引导您朝正确的方向前进。一个选项是只对分数求反,然后将其设置回二次循环。另一种方法是将整个数组项设置为null,并在进行比较之前进行检查…谢谢!!他很有魅力。我曾尝试使用一个循环来替换这个值,但是我没有考虑使用一个分离的变量来存储记录。非常感谢!!
// ...
var clone = {};
for(var i in v[maxIndex])
clone[i] = v[maxIndex][i];
sorted[sorted.length] = clone;
v[maxIndex].score = 0;
// ...