在删除或添加日期时,保持星期数组始终有序
Keep Array of Week Days Always Ordered When Removing or Adding Days
我想保持数组按星期顺序更新
例如:var weekDays = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
现在我有了另一个新的数组里面有一个按钮用来添加不同的星期,比如
var newArry = [];
newArry.push("Fri");
newArry.push("Mon");
newArry.push("Sat");
newArry.splice(1, 1); //remove a day example
现在你可以看到输出将是随机的顺序比如['Fri', 'Mon', 'Sat']
我想保持数组的顺序就像原来的weekDays
如果要把它转换成数字0-6总是按照0-1-2-3-4-5-6的顺序
我想用下面的_.indexOf(weekDays, day), 0, day
,但它仍然有坏的情况下,有时,我的头真的很疼,试图完善这个
假设您不希望得到一个稀疏的数组,您可以定义自己的排序函数,并在任何添加之后简单地使用数组。像这样:
function sortByDay(a,b) {
var order = {
Mon: 0,
Tue: 1,
Wed: 2,
Thu: 3,
Fri: 4,
Sat: 5,
Sun: 6
};
return order[a] - order[b];
}
var arr = ['Fri', 'Mon', 'Sat'];
arr.sort(sortByDay);
// ['Mon', 'Fri', 'Sat'];
使用方括号标记,直接将项目放在它应该在的位置,使用delete
将其删除
var newArray = [];
// adding an item to newArray
newArray[weekDays.indexOf(item)] = item;
// removing an item from newArray
delete newArray[idx];
// or
delete newArray[weekDays.indexOf(item)]
例如,如果你添加"Wed"
newArray[weekDays.indexOf('Wed')] = 'Wed';
newArray; // [undefined × 2, "Wed"]
如果你希望经常这样做你可以稍微加快速度如果你写一个字典,
var d = {};
weekDays.forEach(function (e, i) {d[e] = i;});
现在它只是一个对象循环
newArray[d[item]] = item;
delete newArray[d[item]];
相关文章:
- 从组件状态的数组中删除元素
- Mongoose-在更新中删除数组元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 添加和删除隐藏字段数组中的值,而不提交表单
- 从数组中删除重复条目,并在javascript中按顺序排列
- 一些元素没有从数组中删除
- 删除JS数组中的最小数字
- 从数组中删除三元组项
- 删除重复的数组值,然后存储它们[反应]
- 在特定索引处剥离/删除数组中的值
- 数组删除重复结果Javascript
- 字符串替换或通过数组删除
- js中的对象数组:删除重复项
- KnockoutJS.Mapping.FromJS-可观察数组-删除不起作用
- 用于垃圾收集的Javascript数组删除
- 为什么”——数组.删除数组的最后一个元素
- PHP循环通过脚本数组&删除项目
- 谷歌地图API:试图使用数组删除多个标记
- 带有for循环+条件的Javascript数组删除不必要的元素
- 在JavaScript中管理像ArrayList这样的数组:删除一个元素并关闭创建的间隙