未为javascript对象分配正确的成员值
我有2个JS数组,我正在遍历这两个数组以找到相似的数组未为javascript对象分配正确的成员值,javascript,Javascript,我有2个JS数组,我正在遍历这两个数组以找到相似的数组 anomalies.forEach(function(anomaly) { links.forEach(function(link) { if ((link.source.name === anomaly.source) && (link.target.name === anomaly.target)) { console.log("anomaly");
anomalies.forEach(function(anomaly) {
links.forEach(function(link) {
if ((link.source.name === anomaly.source) && (link.target.name === anomaly.target)) {
console.log("anomaly");
link.type = "anomaly";
console.log(link);
} else {
link.type = "normal";
}
});
});
console.log(links);
如果link.type
的值应该是“异常”
,则其反映仍然是“正常”
。
为什么会这样?应该做什么?看起来,每个都不会改变起始值,请尝试:
n = anomalies.length;
k = links.length;
for(i=0; i<n; i++){
for(j=0; j<k; j++){
if ((links[j].source.name === anomalies[i].source) && (links[j].target.name === anomalies[i].target)) {
console.log("anomaly");
links[j].type = "anomaly";
console.log(links[j]);
} else {
links[j].type = "normal";
}
}
}
console.log(links);
n=长度;
k=链接长度;
对于(i=0;i我是一个算法错误。在提供的屏幕截图中,type=“normal”
是对象的当前值
考虑:
Loop1
Loop2
condition
如果链接对象满足loop2
内的条件,则其类型值被指定为“异常”
。但当loop1
的下一次迭代发生时,且同一链接对象不满足该条件,则该值被指定为“正常”
。因此这是一个算法错误。如果您查看文档:
您可以看到有3个参数可以传递给回调函数
-元素
-索引
-排列
如果您这样调用forEach:
var x=[1,2,3,4,6];
x.forEach(function(e){
if(e==3)f=9;
console.log(e);
})
console.log(x);
var x=[1,2,3,4,6];
x.forEach(function(e,i,a){
if(e==3)a[i]=9;
console.log(a[i]);
})
console.log(x);
一,
2.
9
4.
六,
[1,2,3,4,6]
数组元素的值不会更改,因为您正在更改缓冲区值
但是如果你像这样使用forEach:
var x=[1,2,3,4,6];
x.forEach(function(e){
if(e==3)f=9;
console.log(e);
})
console.log(x);
var x=[1,2,3,4,6];
x.forEach(function(e,i,a){
if(e==3)a[i]=9;
console.log(a[i]);
})
console.log(x);
一,
2.
9
4.
六,
[1,2,9,4,6]
您看到数组中的值发生了变化。无法复制->数组内容是什么样子的?如果看不到,很难说您的代码是否正确。那么屏幕截图呢,它在头中是异常的,但在正文中是正常的?@Regent:头显示console.log()时的值而主体是对象的当前状态。