当我运行以下命令时:
var months = new Set(["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
var string = "27 - 28 August 663 CE";
var words = string.split(" ");
for (var i = 0; i < words.length - 1; i++) {
words[i] += " ";
}
var array = words;
array = $.map(array, function(value){
return value.replace(/ /g, '');
});
const dates = {
days : [],
months : [],
years : [],
suffixes : []
}
for (const word of words) {
if (months.has(word)) {
dates.months.push(word);
} else if (+word < 32) {
dates.days.push(+word);
} else if (+word < 2200) {
dates.years.push(+word);
} else if (/\w+/.test(word)) {
dates.suffixes.push(word);
}
}
console.log(array);
console.log(dates);
输出不正确:
Object {days: Array(2), months: Array(0), years: Array(1), suffixes: Array(2)}
如果我运行:
var months = new Set(["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
var words = ["27","-","28","August","663","CE"];
const dates = {
days : [],
months : [],
years : [],
suffixes : []
}
for (const word of words) {
if (months.has(word)) {
dates.months.push(word);
} else if (+word < 32) {
dates.days.push(+word);
} else if (+word < 2200) {
dates.years.push(+word);
} else if (/\w+/.test(word)) {
dates.suffixes.push(word);
}
}
console.log(dates);
输出是正确的:
Object {days: Array(2), months: Array(1), years: Array(1), suffixes: Array(1)}
最佳答案
因为您在第一段代码中添加了一个完全没有必要的空格:
words[i] += " ";
原因
"january "
在数组(或集合)中找不到,因为它只包含:
"january"
关于javascript - 如何正确地将数组推送到另一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45437081/