Javascript将生日按数组顺序排列
Javascript-putting birthdays in order from array
我在下面有这个Javascript,我知道可能有更好的方法来做我所做的事情,所以如果你想分享一个更好的方法,请做,我一定会使用它。
var Apeople = ["bob", "joe", "jane", "mike", "henry", "alex"];
var Abdays = ["08/20", "01/23", "04/19", "08/16", "01/08", "04/02"];
Apeople和Abdays彼此排队,所以简斯的生日是04/19。
我知道我不应该使用 eval(),所以如果你知道更好的方法,请告诉我。
var mnths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
for(i=0; i<mnths.length; i++){
eval("var "+mnths[i]+" = []");
}
for(i=0; i<Abdays.length; i++){
var ab = Abdays[i];
if(ab.substring(0,1) == "0"){
var mn = ab.substring(1,2); //month number without 0 before it
} else {
var mn = ab.substring(0,2); //month number if 11 or 12
}
eval(""+mnths[mn-1]+".push(i)");
}
现在我有January=[1,4] April=[2,5] August=[0,3]
.我这样做是为了找出谁的名字和什么生日。
例如,Apeople[January[0]]
是乔,Abdays[January[0]]
是 01/23。
我需要做的是将每个月条目按顺序排列,在生日之前首先出现。 Abdays[January[0]]
是 01/23,但Abdays[January[1]]
是 01/08,所以它们应该交换。
当我输入这个时,我想我可能应该使用 JSON。
所以我需要帮助的是将生日整理好,同时仍然能够分辨哪个生日属于哪个名字,同时可能找到更好的方法来编写此代码。
另一种方法。这利用了自定义排序函数。
var birthdays = [];
birthdays[0] = { "name": "Bob", "month": 8, "day": 1 };
birthdays[1] = { "name": "John", "month": 4, "day": 2 };
birthdays[2] = { "name": "Jane", "month": 1, "day": 15 };
birthdays.sort( function( a, b ) {
if(a["month"] < b["month"] ) return -1;
if(a["month"] > b["month"] ) return 1;
if( a["day"] < b["day"] ) return -1;
if( a["day"] > b["day"] ) return 1;
return 0; //they are the same
});
额外的优点是您可以修改排序功能以满足您的需求。
您可以像这样对Abdays
数组进行排序。
Abdays = Abdays.sort(function(a, b){
var d1 = new Date(a + " 2010");
var d2 = new Date(b + " 2010");
return d1 > d2;
});
我随机选择了2010年。您将不得不修改它,如果需要添加更多条件,并编写代码以根据排序Abdays
对Apeople
进行排序。
更新:
写得很快。你可以找到更好的方法,但希望这有帮助
var map = {};
for(var i=0 ; i < Apeople.length; i++){
map[Abdays[i]] = Apeople[i];
}
Abdays = Abdays.sort(function(a, b){
var d1 = new Date(a + " 2010");
var d2 = new Date(b + " 2010");
return d1 > d2;
});
for(var i=0 ; i < Apeople.length; i++){
Apeople[i] = map[Abdays[i]];
}
console.log(Apeople, Abdays);
相关文章:
- 从数组中删除重复条目,并在javascript中按顺序排列
- Javascript从数组中随机选择并按字母顺序排列
- 如何在php中按元素按字母顺序排列json文件
- 如何根据 js 中每个单词的第 n 个字母按字母顺序排列列表
- Javascript将生日按数组顺序排列
- 列出按字母顺序排列的 javascript 和字母标题
- 按字母顺序排列字符串
- 排列<p>使用jQuery按日期顺序排列的元素
- 确定字符串中的所有字母是否按JavaScript字母顺序排列
- 按数组顺序排列对象
- 按字母顺序排列列表
- 多个 ajax 异步不按顺序排列,需要同步行为
- 按数字顺序排列列表
- JavaScript 按字母顺序排列
- jQuery Rotator是按字母顺序排列的,我怎样才能在我的主页上随机化
- 按字母顺序排列 AngularJS 中对象保留键/值关联的选项
- 需要一个优化的解决方案来获取按字母顺序排列的记录集 javascript
- Jquery - 按顺序排列的 ajax 循环
- Javascript 如何创建按顺序排列数字的对象
- Mongodb文档没有按正确的顺序排列