这个find方法的错误在哪里?
Where is the mistake in this find method?
该代码适用于简单的 foreach 函数,但不适用于 find 方法。
这是 forEach 代码:
getItemById: function (id) {
let found = null;
data.items.forEach(item => {
if (item.id === id) {
found = item;
}
});
return found;
}
这是带有查找方法的代码:
getItemById: function (id) {
let item = data.items.find(item => {
item.id === id;
});
return item;
}
为什么代码不能用 find 方法工作?
这里还有对象数组:
const data = {
items: [
{ id: 0, name: 'Steak Dinner', calories: 1200 },
{ id: 1, name: 'Sausage', calories: 1100 },
{ id: 2, name: 'Eggs', calories: 200 },
],
currentItem: null,
totalCalories: 0,
}
您没有返回 find 回调中的布尔值
let item = data.items.find(item => {
return item.id === id;
});
find 需要一个谓词函数作为回调和 return 满足条件的值。如果您不 return,则 undefined
将默认 return,并且 undefined
被视为 falsy
值。
您没有从 find
函数中 returning 任何东西。如果谓词函数不会 return true
,find
将不会考虑匹配。在任何情况下都没有 returns true
的匹配项,因为 find
编辑的所有值 return 都是 undefined
return item.id === id.
const data = {
items: [
{ id: 0, name: "Steak Dinner", calories: 1200 },
{ id: 1, name: "Sausage", calories: 1100 },
{ id: 2, name: "Eggs", calories: 200 },
],
currentItem: null,
totalCalories: 0,
};
const obj = {
getItemById: function (id) {
let item = data.items.find((item) => {
return item.id === id;
});
return item;
},
};
console.log(obj.getItemById(0));
您刚刚在查找函数中忘记了 return
语句。因此它将 运行 遍历所有项目并且目前没有任何结果。
所以只需 return
item.id === id
的结果就可以了。
let item = data.items.find(item => {
return item.id === id;
});
getItemById: function (id) {
return data.items.find(item => item.id === id);
}
您不必使用“{”和“;”在 data.items.find() 方法中。因为,find 是一个谓词函数
如果 lambda 函数包含 单个表达式,它会自动 returned。 (;
和 {}
不是表达式的一部分)
否则return
语句是必须的,要return一个值。
find
接受谓词 & 因此它必须 return a boolean
.
要么,
let item = data.items.find(item => item.id === id);
或者,
let item = data.items.find(item => {
return item.id === id;
});
该代码适用于简单的 foreach 函数,但不适用于 find 方法。 这是 forEach 代码:
getItemById: function (id) {
let found = null;
data.items.forEach(item => {
if (item.id === id) {
found = item;
}
});
return found;
}
这是带有查找方法的代码:
getItemById: function (id) {
let item = data.items.find(item => {
item.id === id;
});
return item;
}
为什么代码不能用 find 方法工作?
这里还有对象数组:
const data = {
items: [
{ id: 0, name: 'Steak Dinner', calories: 1200 },
{ id: 1, name: 'Sausage', calories: 1100 },
{ id: 2, name: 'Eggs', calories: 200 },
],
currentItem: null,
totalCalories: 0,
}
您没有返回 find 回调中的布尔值
let item = data.items.find(item => {
return item.id === id;
});
find 需要一个谓词函数作为回调和 return 满足条件的值。如果您不 return,则 undefined
将默认 return,并且 undefined
被视为 falsy
值。
您没有从 find
函数中 returning 任何东西。如果谓词函数不会 return true
,find
将不会考虑匹配。在任何情况下都没有 returns true
的匹配项,因为 find
编辑的所有值 return 都是 undefined
return item.id === id.
const data = {
items: [
{ id: 0, name: "Steak Dinner", calories: 1200 },
{ id: 1, name: "Sausage", calories: 1100 },
{ id: 2, name: "Eggs", calories: 200 },
],
currentItem: null,
totalCalories: 0,
};
const obj = {
getItemById: function (id) {
let item = data.items.find((item) => {
return item.id === id;
});
return item;
},
};
console.log(obj.getItemById(0));
您刚刚在查找函数中忘记了 return
语句。因此它将 运行 遍历所有项目并且目前没有任何结果。
所以只需 return
item.id === id
的结果就可以了。
let item = data.items.find(item => {
return item.id === id;
});
getItemById: function (id) {
return data.items.find(item => item.id === id);
}
您不必使用“{”和“;”在 data.items.find() 方法中。因为,find 是一个谓词函数
如果 lambda 函数包含 单个表达式,它会自动 returned。 (;
和 {}
不是表达式的一部分)
否则return
语句是必须的,要return一个值。
find
接受谓词 & 因此它必须 return a boolean
.
要么,
let item = data.items.find(item => item.id === id);
或者,
let item = data.items.find(item => {
return item.id === id;
});