如果我要創建一個函式,如果輸入了一個人的名字,我將如何從下面的物件中回傳一個包含寵物名字的陣列,如果我要使用 for 回圈來迭代它,那么最好的方法是什么? 我還沒有完全了解 ES6 的一些特性,而且我是編碼新手。
典型的所有者陣列如下所示:
[ {名稱:'Malcolm',寵物:['Bear','Mnu'],},{名稱:'Caroline',寵物:['Basil','Hamish'],},];
感謝您的快速回復!:)
uj5u.com熱心網友回復:
實作起來很簡單:你用 find 函式搜索對應的所有者,然后,如果你有一個所有者,你回傳 pets 鍵,根據提供的代碼,它已經是一個陣列。如果您沒有與輸入的名稱相對應的所有者,那么您將得到“未定義”,但如果它更適合您的需要,您可以自定義此代碼以具有一個空陣列。
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);
uj5u.com熱心網友回復:
試試這個方法 map() 和 flat()
示例代碼:
const arr = [
{ name: 'Malcolm', pets: ['Bear', 'Minu'], },
{ name: 'Caroline', pets: ['Basil', 'Hamish'], }
];
let res = arr.map(x => x.pets).flat();
console.log(res);
uj5u.com熱心網友回復:
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))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480990.html
標籤:javascript 数组 目的
