Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中从for循环将元素放入数组_Javascript_Arrays_Angularjs - Fatal编程技术网

在Javascript中从for循环将元素放入数组

在Javascript中从for循环将元素放入数组,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我有一个函数,它获取coursecontId我想把它们都放在for循环的一个数组中,但是它会为每个coursecontId创建一个新数组。这是我的密码 function keyLoop() { let content = vm.comparisonThumbnail.list; content.forEach(a => { let cid = a.courseContentId; if (cid == undefined) {

我有一个函数,它获取
coursecontId
我想把它们都放在for循环的一个数组中,但是它会为每个
coursecontId
创建一个新数组。这是我的密码

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);
    }
}
我希望他们像这样[471471471471472472472472473473….]

但它返回[471][471][471][472]。。。。。。等等。

试试这个

 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);
}

这是因为每次调用result函数时都要定义一个新的空数组

为此,您需要在循环执行之前创建数组

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);
    }
}
你可以试试这个

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);
}

难道你不想对列表进行排序吗

let result = vm.comparisonThumbnail.list.map(v => v.courseContentId).sort();
这里我们将获取ID列表(by.map)并对其进行排序。如果我们想保护结果不受未定义ID的影响,它可能看起来像

let result = vm.comparisonThumbnail.list
  .map(v => Number(v.courseContentId))
  .filter(v => !isNaN(v))
  .sort();

每次调用结果时都会重新创建接收方列表。。。将其定义放在函数result()之外()
let receiver=[]正在生成一个新数组。。。。因此,如果您不想要一个新的数组,就不要定义一个新的数组。make let receiver=[];作为一个全局变量。意味着把它从结果函数中带出来。它返回未定义的。对我来说也适用。谢谢