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

问题描述 投票:0回答:4

Array.find
方法返回什么;发现值的特定副本或发现值的参考?

javascript arrays pass-by-reference pass-by-value
4个回答
29
投票

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


5
投票

这是一个棘手的问题。

从技术上讲,

find
始终返回一个值,但如果您要查找的项目是对象,则该值可能是引用。尽管如此,它仍然具有价值。

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

let a = { some: "object" };

let b = a;

您正在将变量 a

value
复制到
b
中。碰巧该值是对象 { some: "object" }
引用


0
投票

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
投票

返回值

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

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

如果找到函数返回真值的数组元素,则 find() 返回该数组元素的值(并且不检查其余值) 否则,它返回未定义

点击这里

© www.soinside.com 2019 - 2024. All rights reserved.