未为javascript对象分配正确的成员值

未为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");

我有2个JS数组,我正在遍历这两个数组以找到相似的数组

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()时的值而主体是对象的当前状态。