在删除或添加天数时,始终按行保留每周数组

时间:2015-07-11 16:42:47

标签: javascript

我想按星期订单更新数组

例如:public function handle($request, Closure $next) { if ($this->auth->check()) { return redirect('/'); //change this part to anywhere you wish to be redirected to } return $next($request); }

现在我有了另一个新阵列,我可以通过按钮添加一周中不同的工作日,例如

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']如果要将其转换为数字0-6,请始终将其输入订单从0-1-2-3-4-5-6

我曾考虑使用以下weekDays,但有时候它仍然会破坏案例,我的头脑真的很痛苦,试图完善它。

2 个答案:

答案 0 :(得分:0)

使用括号表示法,只需将项目直接放在应有的位置,使用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]];

答案 1 :(得分:0)

假设您不希望以稀疏数组结束,您可以定义自己的排序函数,并在添加任何内容后简单地求助数组。像这样:

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'];