JavaScript find(),传递{}和不传递{}有什么区别?
我有下面的例子。这两个find()函数都可以工作,但我不确定第一个带有{}的函数是如何传递到回调函数的 1.如果使用{},我假设一个对象被传递到find函数中,但是如何将“title”作为一个对象来与值进行比较(1.2)。请有人解释一下基础知识,参考一下会更好 2.我知道第二个find函数正在传入对象,arr.title指的是对象“array1”中的值。我是对的JavaScript find(),传递{}和不传递{}有什么区别?,javascript,reactjs,find,brackets,Javascript,Reactjs,Find,Brackets,我有下面的例子。这两个find()函数都可以工作,但我不确定第一个带有{}的函数是如何传递到回调函数的 1.如果使用{},我假设一个对象被传递到find函数中,但是如何将“title”作为一个对象来与值进行比较(1.2)。请有人解释一下基础知识,参考一下会更好 2.我知道第二个find函数正在传入对象,arr.title指的是对象“array1”中的值。我是对的 const array1 = [{name:1,title:1.1}, {name:2,title:1.2}]; const fou
const array1 = [{name:1,title:1.1}, {name:2,title:1.2}];
const found = array1.find(({title}) => title ==1.2);
const found2 = array1.find(arr => arr.title ==1.2);
console.log(found);
console.log(found2);
上述代码的结果是:
> Object { name: 2, title: 1.2 }
> Object { name: 2, title: 1.2 }
这与
Array.prototype.find
无关,而是JavaScript函数参数语法的一般特性
可以使用对象或数组解构语法定义函数参数
函数定义
function f(x) {
return x.p;
}
声明一个函数,该函数接受一个名为x的清单参数
行为相同功能
function f({p}) {
return p;
}
声明一个匿名的清单参数,并提取其p属性
从调用者的角度来看,这两个函数的行为是相同的,实际上,如果传递的第一个参数未定义,这两个函数都将抛出,如果x没有p属性,这两个函数都将返回未定义,依此类推
第二种形式纯粹是在函数实现中使用的一种语法便利,用于提取名为p的属性并在没有限定的情况下使用它
参数destructuring是的一个实例,它有其他应用程序,包括变量声明、赋值和提供默认值。如果使用{},我假设一个对象被传递到find函数中。。。
这是一种叫做解构的Javascript魔法,是一种特殊的语法
发生了什么:对象的值正在被其键解包
结果:对象被传递的密钥分解。这将导致返回键的值,正如您在find函数中看到的那样
为了更好地理解解构,您可以阅读或
为了更好地理解正在发生的事情,您可能首先必须完全理解find函数及其工作原理
我知道第二个find函数正在传入对象。。。
发生了什么:您正在传递所谓的回调。你的意思是,对于数组中的每个条目,运行这个函数,根据回调函数(你的函数)的计算结果,给我输出
结果:这意味着,如果所检查的任何/每个对象的title都等于1.2,那么在回调的情况下arr=>arr.title==1.2
它将计算为true,从而返回该对象
您可能会发现和/或有帮助。发生的是解构分配:
const{title}={title:1.2};
console.log(标题);//1.2
谢谢,它涵盖了包括查找功能在内的所有要点,其他答案没有涵盖。问题已解决,适用于那些希望比下面提供的唯一链接更清楚地了解破坏性作业的人。您可以查看此youtube视频: