Array.find
方法返回什么;发现值的特定副本或发现值的参考?
来自 MDN(强调他们的):
find() 方法返回数组中第一个元素的值 提供的数组满足提供的测试功能。
无论它返回该值的副本还是对该值的引用都将遵循正常的 JavaScript 行为,即如果它是基元,则它将是一个副本,如果它是复杂类型,则它将是一个引用。
let foo = ['a', {bar: 1}];
let a = foo.find(val => val === 'a');
a = 'b';
console.log(foo[0]); //still "a"
let obj = foo.find(val => val.bar);
obj.bar = 2;
console.log(foo[1].bar); //2 - reference
这是一个棘手的问题。
从技术上讲,
find
始终返回一个值,但如果您要查找的项目是对象,则该值可能是引用。尽管如此,它仍然具有价值。
这与这里发生的情况类似:
let a = { some: "object" };
let b = a;
您正在将变量 a
的
value复制到
b
中。碰巧该值是对象 { some: "object" }
的引用。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
find() 方法返回所提供的数组中满足所提供的测试函数的第一个元素的值。
const obj = {}
console.log(obj.find)
const arr = ['a', 'b', 'c']
console.log(arr.find(e => e === 'a'))
console.log(arr.find(e => e ==='c'))
返回值
find() 方法返回数组中通过测试的第一个元素的值(作为函数提供)。
find() 方法对数组中存在的每个元素执行一次该函数:
如果找到函数返回真值的数组元素,则 find() 返回该数组元素的值(并且不检查其余值) 否则,它返回未定义