[英]How to return an array as an array of objects?
我有以下練習:
firstName
的數組 lastName
以及名字和姓氏值 直到現在我的解決方案是:
createListOfObjects = () => {
let names = ['Cameron Betts', 'Shana Lopez', 'Angela Li'];
let deck = [];
for (var i=0; i < names.length; i++){
for (var k=0; k < names.length; k++){
deck.push({ fName: names[i], lName: names[k]})
}
};
return deck;
}
console.log(createListOfObjects());
但是它返回以下內容:
我必須從數組中提取名稱,然后將其拆分以用於我的for,但我不知道我該怎么做。
一種選擇是split
每個全名,以便具有名字和姓氏,然后可以從這兩個變量創建對象。 理想情況下,為此使用.map
- .map
是將一個數組中的每個元素轉換為另一個數組的最合適方法:
createListOfObjects = names => names.map((name) => { const [firstName, lastName] = name.split(' '); return { firstName, lastName }; }); console.log(createListOfObjects(['Cameron Betts', 'Shana Lopez', 'Angela Li']));
要修復您現有的代碼,您只需要對names
一次迭代(沒有嵌套循環),並且在每次迭代時,請split
名稱字符串,然后推送至deck
:
const createListOfObjects = () => { let names = ['Cameron Betts', 'Shana Lopez', 'Angela Li']; let deck = []; for (var i=0; i < names.length; i++){ const fullName = names[i]; const nameArray = names[i].split(' '); const fName = nameArray[0]; const lName = nameArray[1]; for (var k=0; k < names.length; k++){ deck.push({ fName, lName }); } } return deck; } console.log(createListOfObjects());
拆分數組項以提供名字和姓氏,然后重新創建一個新數組,並將每個數組作為對象傳遞。 請注意,如果對象鍵的名稱與viariable相同,則無需聲明它。
var namesList = ['Cameron Betts', 'Shana Lopez', 'Angela Li'] ; createListOfObjects(namesList); function createListOfObjects(arr) { let newArr = []; arr.forEach(function(name){ var namePortions = name.split(' '); var firstName = namePortions[0]; var lastName = namePortions[1]; newArr.push ({firstName, lastName}); }) console.log(newArr); }
您無需在空格上拆分名稱字符串,以分隔名字和姓氏。 另外,對於每個名稱,您都要遍歷每個名稱。 意思是,如果您將名稱拆分為正確的名稱,那么您將以每個名字和每個姓氏結尾。 您想要的是:
create variable with empty array deckArray.
iterate over fullNamesArray
forEach fullNameString
split the fullNameString on the space character
to get a tuple (array of two) with [firstName, lastName]
store firstName and lastName into nameObject
push nameObject into deckArray
return deckArray
像這樣
const createListOfObjects = (names) => {
let deck = [];
for(let i = 0; i < names.length; i += 1) {
let [ firstName, LastName ] = names[i].split(' ');
deck.push({ firstName, lastName });
}
return deck;
}
const names = ['Cameron Betts', 'Shana Lopez', 'Angela Li'];
createListOfObjects(names);
地圖更好
const createListOfObjects = (names) => names.map((fullName) => {
let [ firstName, lastName ] = fullName.split(' ');
return { firstName, lastName };
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.