繁体   English   中英

Array.filter() 和过滤对象的引用

[英]Array.filter() and reference of objects filtered

如果我们在一个对象数组上应用array.filter函数,结果数组是否包含对它从第一个数组过滤的对象的引用?

结果数组是否保存对它从第一个数组过滤的对象的引用

是的,它们是相同的对象, filter器不会克隆它们。 这就像这样做不会克隆一个对象:

const a = {id: 1, value: "one"};
const b = a;
a.value = a.value.toUpperCase();
console.log(b.value); // "ONE" <== In caps

filter实时示例:

 const a = [ {id: 1, value: "one"}, {id: 2, value: "two"}, {id: 3, value: "three"} ]; const b = a.filter(entry => entry.id % 2); a[0].value = a[0].value.toUpperCase(); console.log(a); console.log(b);
 .as-console-wrapper { max-height: 100% !important; }

请注意,无论您从哪个数组获取对象引用, "ONE"都是对象中的所有大写字母。

只是一个例子,检查@TJ Crowder的答案链接

 const arr = [{a:1}, {a:2}, {a:2}]; const newArr = arr.filter(v => va < 3); newArr[0].a = 5; console.log(arr); console.log(newArr);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM