考虑以下包含 csv 格式的国家及其首都的字符串。
let str = `
"country","capital"
"Afghanistan","Kabul"
"Argentina","Buenos Aires"
"Australia","Canberra"
"Austria","Vienna"
"Bangladesh","Dhaka"
"Barbados","Bridgetown"
"Bhutan","Thimphu"
"Brazil","Brasília"
"Canada","Ottawa"
"China","Beijing"
"Denmark","Copenhagen"
"Egypt","Cairo"
"Finland","Helsinki"
"France","Paris"
"Germany","Berlin"
"Greece","Athens"
"India","New Delhi"
"Indonesia","Jakarta"
"Iran","Tehran"
"Iraq","Baghdad"
"Ireland","Dublin"
"Israel","Jerusalem"
"Italy","Rome"
"Japan","Tokyo"
`
如何编写一个函数,将这个字符串作为输入参数并返回一个对象,其中键是国家,值是相应的大写。 输出应类似于:
{
"Afghanistan": "Kabul",
"Argentina": "Buenos Aires"
etc...
}
答案 0 :(得分:0)
众多解决方案之一:
let countries = {};
str.match(/".+?"/g).forEach(function(word, index, words) {
if ((index > 1) && (index % 2 === 0)) {
countries[word] = words[index+1];
}
});
console.log(countries);
答案 1 :(得分:0)
试试看:
let str = `
"country","capital"
"Afghanistan","Kabul"
"Argentina","Buenos Aires"
"Australia","Canberra"
"Austria","Vienna"
"Bangladesh","Dhaka"
"Barbados","Bridgetown"
"Bhutan","Thimphu"
"Brazil","Brasília"
"Canada","Ottawa"
"China","Beijing"
"Denmark","Copenhagen"
"Egypt","Cairo"
"Finland","Helsinki"
"France","Paris"
"Germany","Berlin"
"Greece","Athens"
"India","New Delhi"
"Indonesia","Jakarta"
"Iran","Tehran"
"Iraq","Baghdad"
"Ireland","Dublin"
"Israel","Jerusalem"
"Italy","Rome"
"Japan","Tokyo"
`;
let res = {}
str.split("\n")
.filter(item => item)
.forEach((item, index) => {
if(index == 0) return;
let line = item.split(",")
res[line[0].slice(1,-1)] = line[1].slice(1,-1)
});
console.log(res);
答案 2 :(得分:0)
另一个使用传统方法的例子。
注意这个实际上考虑了标题。
let str = `"country","capital"
"Afghanistan","Kabul"
"Argentina","Buenos Aires"
"Australia","Canberra"
"Austria","Vienna"
"Bangladesh","Dhaka"
"Barbados","Bridgetown"
"Bhutan","Thimphu"
"Brazil","Brasília"
"Canada","Ottawa"
"China","Beijing"
"Denmark","Copenhagen"
"Egypt","Cairo"
"Finland","Helsinki"
"France","Paris"
"Germany","Berlin"
"Greece","Athens"
"India","New Delhi"
"Indonesia","Jakarta"
"Iran","Tehran"
"Iraq","Baghdad"
"Ireland","Dublin"
"Israel","Jerusalem"
"Italy","Rome"
"Japan","Tokyo"`;
const out = {};
str.replace(/"/g,'')
.split("\n") // each line
.slice(1) // remove header
.map(d=>{let a = d.split(','); out[a[0]] = a[1];}); //extract
console.log(out);