返回所有宠物名字的数组
Returning an array of all the pet names
如果我要创建一个函数,如果输入了一个人的名字,我将如何 return 一个包含下面对象中宠物名称的数组,如果我是,最好的方法是什么使用 for 循环遍历它?我还没有完全了解 ES6 的一些功能,而且我是编码新手。
典型的所有者数组如下所示:
[
{
姓名:'Malcolm',
宠物:['Bear', 'Minu'],
},
{
姓名:'Caroline',
宠物:['Basil', 'Hamish'],
},
];
感谢您的快速回复! :)
实现起来非常简单:
你用find函数搜索对应的主人,然后,如果你有主人,你return宠物键,根据提供的代码,它已经是一个数组。如果您没有与输入的名称相对应的所有者,那么您将得到“未定义”,但如果它更适合您的需要,您可以自定义此代码以具有空数组。
const data = [{
name: 'Malcolm',
pets: ['Bear', 'Minu'],
}, {
name: 'Caroline',
pets: ['Basil', 'Hamish'],
}, ];
const getPetsByOwnerName = (ownerName) => {
const owner = data.find(d => d.name === ownerName);
return owner ? owner.pets : undefined;
}
const carolinePets = getPetsByOwnerName('Caroline');
console.log(carolinePets);
编辑:作者要求使用循环
const data = [{
name: 'Malcolm',
pets: ['Bear', 'Minu'],
}, {
name: 'Caroline',
pets: ['Basil', 'Hamish'],
}, ];
function getPetsByOwnerNameWithLoop(ownerName) {
for (let i = 0; i < data.length; i++) {
if (data[i].name === ownerName) {
return data[i].pets;
}
}
return undefined;
}
const carolinePets = getPetsByOwnerNameWithLoop('Caroline');
console.log(carolinePets);
试试 filter() 方法。函数 returns 过滤所有者的名称数组作为结果。
示例代码:
const arr = [
{ name: 'Malcolm', pets: ['Bear', 'Minu'], },
{ name: 'Caroline', pets: ['Basil', 'Hamish'], }
];
function petsNames(val) {
return arr.filter(x => x.name === val)[0].pets;
};
console.log(petsNames('Malcolm'));
let ownersArray = [ { name: 'Malcolm', pets: ['Bear', 'Minu'], }, { name: 'Caroline', pets: ['Basil', 'Hamish'], }, ];
const petArray = (owner, ownersArray) => {
let array = ownersArray.filter((arr) => arr.name===owner)
return array.length>0 ? array[0].pets : 'owner not found'
}
console.log(petArray("Caroline", ownersArray))
如果我要创建一个函数,如果输入了一个人的名字,我将如何 return 一个包含下面对象中宠物名称的数组,如果我是,最好的方法是什么使用 for 循环遍历它?我还没有完全了解 ES6 的一些功能,而且我是编码新手。
典型的所有者数组如下所示:
[ { 姓名:'Malcolm', 宠物:['Bear', 'Minu'], }, { 姓名:'Caroline', 宠物:['Basil', 'Hamish'], }, ];
感谢您的快速回复! :)
实现起来非常简单: 你用find函数搜索对应的主人,然后,如果你有主人,你return宠物键,根据提供的代码,它已经是一个数组。如果您没有与输入的名称相对应的所有者,那么您将得到“未定义”,但如果它更适合您的需要,您可以自定义此代码以具有空数组。
const data = [{
name: 'Malcolm',
pets: ['Bear', 'Minu'],
}, {
name: 'Caroline',
pets: ['Basil', 'Hamish'],
}, ];
const getPetsByOwnerName = (ownerName) => {
const owner = data.find(d => d.name === ownerName);
return owner ? owner.pets : undefined;
}
const carolinePets = getPetsByOwnerName('Caroline');
console.log(carolinePets);
编辑:作者要求使用循环
const data = [{
name: 'Malcolm',
pets: ['Bear', 'Minu'],
}, {
name: 'Caroline',
pets: ['Basil', 'Hamish'],
}, ];
function getPetsByOwnerNameWithLoop(ownerName) {
for (let i = 0; i < data.length; i++) {
if (data[i].name === ownerName) {
return data[i].pets;
}
}
return undefined;
}
const carolinePets = getPetsByOwnerNameWithLoop('Caroline');
console.log(carolinePets);
试试 filter() 方法。函数 returns 过滤所有者的名称数组作为结果。
示例代码:
const arr = [
{ name: 'Malcolm', pets: ['Bear', 'Minu'], },
{ name: 'Caroline', pets: ['Basil', 'Hamish'], }
];
function petsNames(val) {
return arr.filter(x => x.name === val)[0].pets;
};
console.log(petsNames('Malcolm'));
let ownersArray = [ { name: 'Malcolm', pets: ['Bear', 'Minu'], }, { name: 'Caroline', pets: ['Basil', 'Hamish'], }, ];
const petArray = (owner, ownersArray) => {
let array = ownersArray.filter((arr) => arr.name===owner)
return array.length>0 ? array[0].pets : 'owner not found'
}
console.log(petArray("Caroline", ownersArray))