Положить элементы в массиве из цикла в Javascript - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть функция, которая получает courseContentId. Я хотел поместить их все в массив из цикла for, но в результате создается новый массив для каждого courseContentId.Вот мой код.

function keyLoop() {
    let content = vm.comparisonThumbnail.list;
    content.forEach(a => {
        let cid = a.courseContentId;
        if (cid == undefined) {
            cid = ' ';
        }

        vm.loopKey = cid;
        var pass = vm.loopKey;
        result(pass);
    });

    function result(pass) {
        let receiver = [];

        receiver.push(pass);
        console.log(receiver);
    }
}

Я хотел, чтобы они были такими [471, 471, 471, 472, 472, 472, 473, 473 ....]

Но вместо этогоон возвращает [471] [471] [471] [472] ...... и т. д.

Ответы [ 4 ]

0 голосов
/ 03 декабря 2018

Разве вы не хотите просто отсортировать список?

let result = vm.comparisonThumbnail.list.map(v => v.courseContentId).sort();

Здесь мы берем список идентификаторов (по .map) и сортируем их.Если мы хотим защитить результат от неопределенных идентификаторов, это может выглядеть как

let result = vm.comparisonThumbnail.list
  .map(v => Number(v.courseContentId))
  .filter(v => !isNaN(v))
  .sort();
0 голосов
/ 03 декабря 2018

Это потому, что вы определяете новый пустой массив каждый раз, когда вызываете функцию результата.

Для этого вам нужно будет создать массив до того, как ваш цикл будет выполнен.

function keyLoop() {
    let receiver = [];
    let content = vm.comparisonThumbnail.list;
    content.forEach(a => {
        let cid = a.courseContentId;
        if (cid == undefined) {
            cid = ' ';
        }

        vm.loopKey = cid;
        var pass = vm.loopKey;
        result(pass);
    });

    function result(pass) {
        receiver.push(pass);
        console.log(receiver);
    }
}
0 голосов
/ 03 декабря 2018

Вы можете попробовать это.

function keyLoop() {
    let content = vm.comparisonThumbnail.list;
    let receiver = [];
    let courseCounter = 0;

    content.forEach(a => {
        let cid = a.courseContentId;
        if (cid == undefined) {
            cid = ' ';
        }

        vm.loopKey = cid;
        var pass = vm.loopKey;
        receiver[courseCounter] = pass;
        courseCounter++;
    });
    console.log(receiver);
}
0 голосов
/ 03 декабря 2018

Попробуйте это

 function keyLoop() {
    let content = vm.comparisonThumbnail.list;
    let receiver = [];
    content.forEach(a => {
        let cid = a.courseContentId;
        if (cid == undefined) {
            cid = ' ';
        }

        vm.loopKey = cid;
        var pass = vm.loopKey;
        receiver.push(pass);
    });
    console.log(receiver);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...