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];
}];
6function 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