Hướng dẫn return statement inside foreach javascript - câu lệnh trả về bên trong foreach javascript

Tôi đang cố gắng xác định xem một mảng có giữ một mục nhất định hay không. Nếu có, tôi muốn giữ chức năng, nếu không nó sẽ được thêm vào.

function addPacking[item]{

    data.packings.forEach[function[entry]{
       if[item.name == entry.name]{
           return;
       }
    }];

    data.packings.push[item];

}

Thật không may, dữ liệu được đẩy ngay cả khi điều kiện IF được đáp ứng. Làm cách nào để ngăn chặn hành vi này mà không cần sử dụng điều kiện else?

[Tôi không muốn sử dụng else vì mã thực tế của tôi phức tạp hơn rất nhiều so với thế này và tôi muốn giữ nó có thể đọc được]

Edit:

function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
0 có thực thi không đồng bộ không?

Hỏi ngày 25 tháng 7 năm 2014 lúc 9:13Jul 25, 2014 at 9:13

user2422960user2422960user2422960

1.4166 huy hiệu vàng16 Huy hiệu bạc27 Huy hiệu đồng6 gold badges16 silver badges27 bronze badges

0

Những cách cũ đôi khi là tốt nhất. Đó là bởi vì bạn đang chuyển một chức năng đại biểu khi gọi

function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
1.
function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
2 trong đại biểu đang bị mất và không áp dụng cho bất cứ điều gì. Để có được kết quả mong muốn của bạn, bạn sẽ muốn thoát khỏi chức năng gọi
function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
3. Điều này có thể được thực hiện bằng cách sử dụng một vòng lặp
function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
4.

function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];

Cách tiếp cận này cũng hỗ trợ các trình duyệt cũ hơn, không giống như

function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
5,
function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
6 và
function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
0supports older browsers, unlike
function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
5,
function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
6 and
function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
0

Đã trả lời ngày 25 tháng 7 năm 2014 lúc 9:20Jul 25, 2014 at 9:20

RichardrichardRichard

7.9803 Huy hiệu vàng34 Huy hiệu bạc57 Huy hiệu đồng3 gold badges34 silver badges57 bronze badges

4

Bạn không thể dừng thực thi foreach ngoài việc ném một ngoại lệ [@yoshi]. Mà không nên được coi là một tùy chọn để ảnh hưởng đến luồng mã chương trình [@me].

Những gì bạn có thể làm là sử dụng một phương pháp khác

function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
5 hoặc
function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
6

function addPacking[item]{
    var contains = data.packings.every[function[entry]{
       return item.name != entry.name;
    }];

    if[contains] {
       data.packings.push[item];
    }
}

Hoặc

function addPacking[item]{
    var conatins = !data.packings.some[function[entry]{
       return item.name == entry.name;
    }];

    if[contains] { 
       data.packings.push[item];
    }
}

Đã trả lời ngày 25 tháng 7 năm 2014 lúc 9:19Jul 25, 2014 at 9:19

Yury Tarabankoyury TarabankoYury Tarabanko

42.9k9 Huy hiệu vàng82 Huy hiệu bạc96 Huy hiệu Đồng9 gold badges82 silver badges96 bronze badges

6

Câu hỏi cũ nhưng trong trường hợp người khác đi qua chủ đề này.

Nếu bạn đang sử dụng ecmascript 6, bạn có thể sử dụng phương thức find [] mảngECMAScript 6 you can use the Array find[] method

var found = myArray.find[function [element] { return element === arrayToFind; }];

Vì vậy, đối với kịch bản cụ thể này sẽ là:

function addPacking[item]{
    var foundItem = data.find[function[entry]{ return entry.name == item.name}];
    if [foundItem] data.packings.push[foundItem];    
}

Xem //www.w3schools.com/jsref/jsref_find.asp để biết một ví dụ hoạt động khác.

Đã trả lời ngày 16 tháng 11 năm 2016 lúc 14:54Nov 16, 2016 at 14:54

BtnMikeBtnMikeBtnMike

3234 Huy hiệu bạc6 Huy hiệu Đồng4 silver badges6 bronze badges

Trả về chỉ hủy bỏ hàm được gọi trong

function addPacking[item]{
    for [var i = 0; i < data.packings.length++; i++] {
        if [item.name == data.packings[i].name] {
            return;
        }
    }

    data.packings.push[item];
}];
0, không phải là hàm
function addPacking[item]{
    var contains = data.packings.every[function[entry]{
       return item.name != entry.name;
    }];

    if[contains] {
       data.packings.push[item];
    }
}
1 của bạn.

function addPacking[item]{
    var isInPackings = false;
    data.packings.forEach[function[entry]{
       if[item.name == entry.name]{
           isInPackings = true;
       }
    }];
    if [!isInPackings]
        data.packings.push[item];

}

Đã trả lời ngày 25 tháng 7 năm 2014 lúc 9:18Jul 25, 2014 at 9:18

GLFLORIAN FLORIAN GLFlorian Gl

5.9542 Huy hiệu vàng16 Huy hiệu bạc29 Huy hiệu đồng2 gold badges16 silver badges29 bronze badges

Yo chỉ trở về từ chức năng con nhưng không phải từ chức năng cha mẹ

function addPacking[item]{
    var check=false;
    data.packings.forEach[function[entry]{
       if[item.name == entry.name]{
          check=true; 
          return;
       }
    }];
     if [check] return;
    data.packings.push[item];

}

Benmorel

32.9K48 Huy hiệu vàng173 Huy hiệu bạc 306 Huy hiệu đồng48 gold badges173 silver badges306 bronze badges

Đã trả lời ngày 25 tháng 7 năm 2014 lúc 9:18Jul 25, 2014 at 9:18

GLFLORIAN FLORIAN GLSrinath

5.9542 Huy hiệu vàng16 Huy hiệu bạc29 Huy hiệu đồng2 gold badges22 silver badges37 bronze badges

1

Tôi có thể sử dụng lợi nhuận trong foreach js không?

Bạn không thể làm cho hàm foreach [] của JavaScript trả về một giá trị tùy chỉnh.Sử dụng return trong foreach [] tương đương với việc tiếp tục trong một vòng lặp thông thường.. Using return in a forEach[] is equivalent to a continue in a conventional loop.

Có trả lại lối thoát không?

Lợi nhuận thoát khỏi hàm hiện tại, nhưng các lần lặp lại tiếp tục, vì vậy bạn nhận được mục "tiếp theo" bỏ qua IF và cảnh báo 4 ..., but the iterations keeps on, so you get the "next" item that skips the if and alerts the 4...

Tôi có thể sử dụng tiếp tục bên trong foreach không?

Trong Kotlin, chúng ta không thể sử dụng rõ ràng các câu lệnh break và tiếp tục rõ ràng bên trong một vòng lặp foreach, nhưng chúng ta có thể mô phỏng hành động tương tự.we cannot explicitly use break and continue statements explicitly inside a forEach loop, but we can simulate the same action.

Bài Viết Liên Quan

Chủ Đề