Javascript 如何将字符串数组转换为对象,以便将这些对象拆分为键值对?
使用Javascript(最好是在for循环中)如何将全名数组转换为对象,以便将这些对象拆分为键-值对,键被称为“first”和“last”,而值是被拆分为这些类别的全名 我从一个被分隔成新行的名称字符串开始…到目前为止,我已经使用.split(“\n”)方法将该字符串拆分为一个数组。我现在在每个名字的前面都有多余的空格…不确定这是否真的重要…但我已经尝试了。拼接(“”)以尝试去除多余的空格。。。但它不起作用。正如你所看到的,我需要一点帮助。谢谢大家!Javascript 如何将字符串数组转换为对象,以便将这些对象拆分为键值对?,javascript,arrays,string,object,split,Javascript,Arrays,String,Object,Split,使用Javascript(最好是在for循环中)如何将全名数组转换为对象,以便将这些对象拆分为键-值对,键被称为“first”和“last”,而值是被拆分为这些类别的全名 我从一个被分隔成新行的名称字符串开始…到目前为止,我已经使用.split(“\n”)方法将该字符串拆分为一个数组。我现在在每个名字的前面都有多余的空格…不确定这是否真的重要…但我已经尝试了。拼接(“”)以尝试去除多余的空格。。。但它不起作用。正如你所看到的,我需要一点帮助。谢谢大家! var nameString = docu
var nameString = document.getElementsByTagName("textarea")[0].value;
var nameArray = nameString.split("\n");
以下是拆分字符串的结果:
[" Genevieve Harber IV",
" Dewitt Weber",
" Krystina O'Kon",
" Jeremy Adams",
" Aileen Lakin",
" Jesus Quigley",
" Shea Rempel",
" Citlalli Bernier",
" Forest Dare",
" Reina Kilback",
" Nathanael Abshire",
" Augustus Hoppe",
" Myrtis Herzog",
" Jack Senger",
" Ronny Smitham",
" Jordi Bruen",
" Leta Pfannerstill",
" Kayla Kshlerin",
" Norbert Thompson",
" Nat Lebsack"]
如果你知道你的前面总是有空位,而且总是有两个名字:
var peopleArray = nameArray.map(function(n) {
o = n.split(/\s+/); return { first: o[1], last: o[2] };
});
如果你知道你的前面总是有空位,而且总是有两个名字:
var peopleArray = nameArray.map(function(n) {
o = n.split(/\s+/); return { first: o[1], last: o[2] };
});
使用map函数(Array.prototype.map)
这将为您提供一个对象数组,其中每个对象都有一个与名字/姓氏对应的“first”和“last”属性。使用map函数(array.prototype.map)
var objectList = []; //holder for the array of names
var mylist = [" Genevieve Harber IV",
" Dewitt Weber",
" Krystina O'Kon",
" Jeremy Adams",
" Aileen Lakin",
" Jesus Quigley",
" Shea Rempel",
" Citlalli Bernier",
" Forest Dare",
" Reina Kilback",
" Nathanael Abshire",
" Augustus Hoppe",
" Myrtis Herzog",
" Jack Senger",
" Ronny Smitham",
" Jordi Bruen",
" Leta Pfannerstill",
" Kayla Kshlerin",
" Norbert Thompson",
" Nat Lebsack"];
//loop over the list
for (var i=0; i < mylist.length; i++) {
var trimmed=mylist[i].trim(); //trim excess spaces
var names = trimmed.split(" "); //split on spaces in between
objectList.push({"first": names[0], "last": names[1]}); //push object onto array
}
//print the 4th name for demonstration of how to access it
console.log(objectList[3].last + ", " + objectList[3].first);
这将为您提供一个对象数组,其中每个对象都有一个与名字/姓氏对应的“first”和“last”属性。var objectList=[]//名称数组的持有者
var objectList = []; //holder for the array of names
var mylist = [" Genevieve Harber IV",
" Dewitt Weber",
" Krystina O'Kon",
" Jeremy Adams",
" Aileen Lakin",
" Jesus Quigley",
" Shea Rempel",
" Citlalli Bernier",
" Forest Dare",
" Reina Kilback",
" Nathanael Abshire",
" Augustus Hoppe",
" Myrtis Herzog",
" Jack Senger",
" Ronny Smitham",
" Jordi Bruen",
" Leta Pfannerstill",
" Kayla Kshlerin",
" Norbert Thompson",
" Nat Lebsack"];
//loop over the list
for (var i=0; i < mylist.length; i++) {
var trimmed=mylist[i].trim(); //trim excess spaces
var names = trimmed.split(" "); //split on spaces in between
objectList.push({"first": names[0], "last": names[1]}); //push object onto array
}
//print the 4th name for demonstration of how to access it
console.log(objectList[3].last + ", " + objectList[3].first);
var mylist=[“Genevieve Harber IV”,
“德维特·韦伯”,
“Krystina O'Kon”,
“杰里米·亚当斯”,
“爱玲·拉金”,
“耶稣奎格利”,
“Shea Rempel”,
“西特拉利·贝尼尔”,
“森林挑战”,
“雷纳·基尔巴克”,
“纳撒尼尔·阿布希尔”,
“奥古斯都·霍普”,
“桃金娘”,
“杰克·森格”,
“Ronny Smitham”,
“Jordi Bruen”,
“Leta Pfannerstill”,
“凯拉·克什莱林”,
“诺伯特·汤普森”,
“Nat Lebsack”];
//循环浏览列表
对于(变量i=0;i
var objectList=[]//名称数组的持有者
var mylist=[“Genevieve Harber IV”,
“德维特·韦伯”,
“Krystina O'Kon”,
“杰里米·亚当斯”,
“爱玲·拉金”,
“耶稣奎格利”,
“Shea Rempel”,
“西特拉利·贝尼尔”,
“森林挑战”,
“雷纳·基尔巴克”,
“纳撒尼尔·阿布希尔”,
“奥古斯都·霍普”,
“桃金娘”,
“杰克·森格”,
“Ronny Smitham”,
“Jordi Bruen”,
“Leta Pfannerstill”,
“凯拉·克什莱林”,
“诺伯特·汤普森”,
“Nat Lebsack”];
//循环浏览列表
对于(变量i=0;i
如果您需要处理多个单词的姓氏(例如Van Damme),则以下内容将有所帮助。它将第一个单词作为名字,其余的作为姓氏。它还处理仅为一个单词的名称(例如“Sting”),将其设为名字,将其设为姓氏“”(空字符串)。如果需要,可以修改回调函数以反转该函数
它还可以删除额外的空白,而无需任何额外的处理
var data =
[" Genevieve Harber IV",
" Dewitt Weber",
" Krystina O'Kon",
" Jean-Claude Van Damme",
" Giessel"];
var names = data.reduce(function(names, name) {
name = name.match(/\S+/g);
if (name) {
names.push({first: name.shift(), last: name.join(' ')});
}
return names;
}, []);
console.log(JSON.stringify(names));
// [{"first":"Genevieve","last":"Harber IV"},
// {"first":"Dewitt","last":"Weber"},
// {"first":"Krystina","last":"O'Kon"},
// {"first":"Jean-Claude","last":"Van Damme"},
// {"first":"Giessel","last":""}]
但是,名称可能比这更复杂。使用reduce的好处在于,您可以消除未通过验证的记录,例如,如果存在空字符串,则上面的内容不会将其放入名称数组。如果您需要处理多个单词的姓氏(例如Van Damme),则以下内容将有所帮助。它将第一个单词作为名字,其余的作为姓氏。它还处理仅为一个单词的名称(例如“Sting”),将其设为名字,将其设为姓氏“”(空字符串)。如果需要,可以修改回调函数以反转该函数 它还可以删除额外的空白,而无需任何额外的处理
var data =
[" Genevieve Harber IV",
" Dewitt Weber",
" Krystina O'Kon",
" Jean-Claude Van Damme",
" Giessel"];
var names = data.reduce(function(names, name) {
name = name.match(/\S+/g);
if (name) {
names.push({first: name.shift(), last: name.join(' ')});
}
return names;
}, []);
console.log(JSON.stringify(names));
// [{"first":"Genevieve","last":"Harber IV"},
// {"first":"Dewitt","last":"Weber"},
// {"first":"Krystina","last":"O'Kon"},
// {"first":"Jean-Claude","last":"Van Damme"},
// {"first":"Giessel","last":""}]
但是,名称可能比这更复杂。使用reduce的好处在于,您可以删除未通过验证的记录,例如,如果存在空字符串,则上面的内容不会将其放入名称数组。我猜您是在从“Genevieve Harber IV”中删除“IV”,也不会处理“Jean-Claude Van Damme”。我猜您是在从“Genevieve Harber IV”中删除“IV”《热纳维夫·哈伯四世》,也不会与《让·克劳德·范达姆》相比。