Array.find 方法是否返回给定数组中匹配元素的副本或引用?[已结束]

Does Array.find method return a copy or a reference of the matched element form given array? [closed]

提问人:MD Jahid Hasan 提问时间:6/21/2020 最后编辑:MD Jahid Hasan 更新时间:11/25/2021 访问量:8589

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

3年前关闭。

Array.find 方法返回值是什么,找到的值或数组中的引用的一些特定副本。我的意思是它从给定数组中返回匹配元素的值或引用。

JavaScript 数组 按引用传递

评论

5赞 ibrahim mahrir 6/21/2020
你是说?array.find
0赞 MD Jahid Hasan 6/21/2020
是的,我通过邮寄更正了。
0赞 Ivar 6/21/2020
你说的“复制”具体是什么意思?你为什么特别想知道这个?你的问题看起来与JavaScript是按引用传递还是按值传递的语言重复?,但我并不完全相信。.find()
0赞 MD Jahid Hasan 6/21/2020
新实例,与它所属的数组无关。主要按值传递
1赞 Ivar 6/21/2020
@MDJahidHasan JavaScript 是按值传递的,因此您将始终获得一个值。但该值可以是对对象的引用。但这与功能完全无关。这就是 JavaScript 的工作方式。请参阅我在之前的评论中放置的链接。Array.prototype.find()

答:

28赞 Mitya 6/21/2020 #1

来自 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

0赞 ebyte 6/21/2020 #2

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'))

0赞 Merrin K 6/21/2020 #3

返回值

find() 方法返回数组中通过测试的第一个元素的值(作为函数提供)。

find() 方法对数组中存在的每个元素执行一次函数:

如果它找到一个数组元素,其中函数返回一个 true 值,find() 返回该数组元素的值(并且不检查其余值) 否则,它将返回 undefined

点击这里

5赞 ibrahim mahrir 6/21/2020 #4

这是一个棘手的问题。

从技术上讲,始终返回一个值,但如果您要查找的项是对象,则该值可以作为引用。尽管如此,它仍然是一个价值。find

这与这里发生的事情类似:

let a = { some: "object" };

let b = a;

您正在将变量的复制到 中。碰巧该值是对对象的引用ab{ some: "object" }