Enr*_*mos 5 javascript arrays find ecmascript-6
我正在使用Array.prototype.find来搜索数组中的Object Person.我想用id来找到这个Object.我一直在阅读方法find(ES6),但我不知道为什么我的代码错了.
这是我的代码:
AddresBook.prototype.getPerson = function (id) {
return this.lisPerson.find(buscarPersona, id);
};
function buscarPersona(element, index, array) {
if (element.id === this.id) {
return element;
} else
return false;
}
Run Code Online (Sandbox Code Playgroud)
您将id直接作为thisArg参数传递给.find(),但在内部buscarPersona您希望this是一个具有.id属性的对象。所以要么
传递一个对象:
lisPerson.find(buscarPersona, {id});
function buscarPersona(element, index, array) {
return element.id === this.id;
}
Run Code Online (Sandbox Code Playgroud)this直接使用:
lisPerson.find(buscarPersona, id);
function buscarPersona(element, index, array) {
// works in strict mode only, make sure to use it
return element.id === this;
}
Run Code Online (Sandbox Code Playgroud)只是通过一个闭包
lisPerson.find(element => element.id === id);
Run Code Online (Sandbox Code Playgroud)