Array.prototype.find 在数组中搜索对象
Array.prototype.find to search an Object in an Array
我正在使用 Array.prototype.find 在数组中搜索对象人物。我想使用 id 来找到这个对象。我一直在阅读有关查找方法 (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;
}
可以在 AddressBook's
原型中添加一个肮脏的解决方案 last_id
。
所以你的代码如下
AddressBook.prototype.getPerson = function(id){
this.last_id = id;
return this.lisPerson.find(buscarPersona,this);
}
function buscarPersona(element){
if(element.id === this.last_id){
return element;
}else{
return false;
}
}
您将 id
作为 thisArg
parameter to .find()
直接传递,但在 buscarPersona
内部您期望 this
是一个具有 .id
属性。所以要么
传递一个对象:
lisPerson.find(buscarPersona, {id});
function buscarPersona(element, index, array) {
return element.id === this.id;
}
直接使用this
:
lisPerson.find(buscarPersona, id);
function buscarPersona(element, index, array) {
// works in strict mode only, make sure to use it
return element.id === this;
}
只是传递一个闭包
lisPerson.find(element => element.id === id);
我正在使用 Array.prototype.find 在数组中搜索对象人物。我想使用 id 来找到这个对象。我一直在阅读有关查找方法 (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;
}
可以在 AddressBook's
原型中添加一个肮脏的解决方案 last_id
。
所以你的代码如下
AddressBook.prototype.getPerson = function(id){
this.last_id = id;
return this.lisPerson.find(buscarPersona,this);
}
function buscarPersona(element){
if(element.id === this.last_id){
return element;
}else{
return false;
}
}
您将 id
作为 thisArg
parameter to .find()
直接传递,但在 buscarPersona
内部您期望 this
是一个具有 .id
属性。所以要么
传递一个对象:
lisPerson.find(buscarPersona, {id}); function buscarPersona(element, index, array) { return element.id === this.id; }
直接使用
this
:lisPerson.find(buscarPersona, id); function buscarPersona(element, index, array) { // works in strict mode only, make sure to use it return element.id === this; }
只是传递一个闭包
lisPerson.find(element => element.id === id);