Angular Js在排序后插入数组值

时间:2014-12-07 19:53:09

标签: javascript angularjs

大家好,我被困在角js里。 我要做的是显示selectionSort的步​​骤,我所做的代码是

var myApp = angular.module('myApp',[]);

var arraymain = [];

myApp.controller('myController',function($scope) {
    $scope.array2 = [];
    $scope.selectionSort = function(list) {
    n=list.length;
    temp2 = list;
    for(i=0; i<n-1; i++) { //need to do n-2 passes
        i_min=i;
        //finding mining index
        for(j=i+1;j<n;j++){//ith position: elements from i till n-1 candidates
            if(temp2[j]<temp2[i_min]) 
                i_min=j; //update the index of minimim element
        }
        temp=temp2[i];
        temp2[i]=temp2[i_min];
        temp2[i_min]=temp;
        alert(temp); //It shows as needed
                    $scope.array2.push(temp2); //Here i am having problem it saves the sorted final array i.e the last every time of loop but i want to save current array on every outer loop execution                       
    }
    return list;

    $scope.selectionSort([3,2,3,4,5,1,2]);
    console.log($scope.array2[0]);
    console.log($scope.array2[1]);
    console.log($scope.array2[2]);
});

抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

目前尚不清楚您需要做什么。我很确定你的主要问题已经超出你的主要问题了,使用Angular只会让情况变得更糟。

如果你的目标是在console.log外循环的每一步都selectionSort数组的状态,那么你需要在每个循环的底部运行console.log

看起来可疑的第一件事是:

$scope.array2.push(temp2);

如果你按照我的建议在循环的每一步运行console.log(array2),你需要这一行:

$scope.array2 = temp2;

这样,你覆盖array2,它在for循环的每次迭代中保存数组的状态。然后你记录它。将每个状态附加到一个更大的数组,然后对该数组中的每个项目运行console.log不是最好的方法。

但是,我不确定你的问题是什么。