下述代码实现了将一个对象{“hour1Price”:1,hour1str:“0”,hour2Price:2,hour2str:‘0’,…}变为[{hour1price:1,hour1str:0},{hour2price:1,hour2str:0}…]这样的数组
var dayToHourPrice = {
hour2Price: 2,
hour3str: "0",
hour1Price: 1,
hour5str: "0",
hour4Price: 4,
hour4str: "0",
hour1str: '0',
hour2str: '0',
hour3Price: 4,
hour4str: 4,
hour5Price: 4,
hour11str: 4,
hour11Price: 4,
......
};
var priceArray = Object.entries(dayToHourPrice);
priceArray.sort(function(a, b) {
var aNumber = parseInt(a[0].match(/\d+/)[0]);
var bNumber = parseInt(b[0].match(/\d+/)[0]);
return aNumber - bNumber;
});
var hourPriceArray = [];
for (var i = 0; i < priceArray.length; i += 2) {
var hourObject = {
[priceArray[i][0]]:priceArray[i][1],
[priceArray[i+1][0]]: priceArray[i+1][1]
};
hourPriceArray.push(hourObject);
}
console.log(priceArray,hourPriceArray);
*上述代码使用的match介绍
match()方法是JavaScript中字符串对象的方法之一,它可以用来在一个字符串中查找匹配的子串,并返回一个包含匹配结果的数组。match()方法可以接收一个参数,这个参数可以是正则表达式对象或者一个字符串
string.match(regexp)
lvar str="The rain in SPAIN stays mainly in the plain";
var n=str.match(/ain/gi);
console.log(n); // ['ain', 'AIN', 'ain', 'ain']
var str="The rain in SPAIN stays mainly in the plain";
var n=str.match(/ain/g);
console.log(n); // ['ain', 'ain', 'ain']
var str="The rain in SPAIN stays mainly in the plain";
var n=str.match(/ain/);
console.log(n[0]); // ain
match() 方法将检索字符串 String Object,以找到一个或多个与 regexp 匹配的文本。
这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息