[英]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.