10/10/2018, 09:51

Cần giúp đỡ về JavaScript Array

Mình có chút vấn đề về JavaScript muốn nhờ các bạn giải đáp giúp.
Mình có đoạn code sau
Code:
var fixurl = new 
	Array('link1','link2','link3','link4','link5');
var url=link3;
Mình đã sử dụng bằng cách
Code:
if(url==fixurl[2])
{alert(fixurl[2]);}
Nhưng bằng cách này mình chỉ chó nó nhận được 1 phần tử trong đó thôi.Vì thế các bạn có thể sửa giùm mình sao cho url nếu bằng bất kỳ 1 phần tử nào trong fixurl thì sẽ có kết quả được không.
bachcotsau viết 12:08 ngày 10/10/2018
Có nghĩa là mình muốn lấy một giá trị để so sánh với giá trị khác,NHưng mình muốn được tự động hơn.Thay vì
Code:
if(url==fixurl[1] || url==fixurl[2] || url==fixurl[3] || url==fixurl[4])
{alert('ok');}
Sao ta không tìm cách tạo ra bộ so sánh tự động gọn hơn để cho các mẫu cần so sánh vào chung một hàm nào đó như Array
thuyduongcd viết 11:57 ngày 10/10/2018
Code:
var result=false;
for (x in fixurl){
if (fixurl[x]==url){
 result=true;
}
}
Thật sự bạn nói gì mình không hiểu. Nhưng về tài liệu về JS bạn có thể tìm thêm tại http://itcvietnam.org/viewforum.php?f=11 Có nhiều cho bạn chọn. Kễ cả sách tiếng anh lẫn tiếng việt, code mẫu, giải thích hàm....
Trước giờ cứ thắc mắc không hiểu bác này tại sao cứ giới thiệu link bên ITC, giờ mới biết là quản trị bên đó qua đây lôi kéo thành viên ha ha
phuongthom viết 12:01 ngày 10/10/2018
hok biết đã học qua pascal hay ngôn ngữ đơn giản khác chưa vậy :|
giải thuật này cơ bản lắm mà
bachcotsau viết 12:07 ngày 10/10/2018
Code:
var result=false;
for (x in fixurl){
if (fixurl[x]==url){
 result=true;
}
}
Như vậy làm thế nào để so sánh đây bạn.
Mình gọi ra nó chỉ so sánh được từ cuối cùng thôi.

[=========> Bổ sung bài viết <=========]

Bạn có thể cho nó tương tự giống php này không
PHP Code:

<?php
    $array0 
= array("link2");
$array1 = array("link1""link2""link3""link4");
$result array_intersect($array0$array1);
if(
$array0==$result){print_r($result);}
?>
thuyduongcd viết 12:04 ngày 10/10/2018
Code:
function in_aray(url,fixurl){
   var result=false;
   var x;
   for (x in fixurl){
      if (fixurl[x]==url){
         result=true;
      }
   }
   retrun result;
}
//Use
if in_array(url,fixurl){
   // url nằm trong fixurl
}else{
   // url ko nằm trong fixurl
}
bachcotsau viết 12:04 ngày 10/10/2018
Code:
function in_aray(url,fixurl){
   var result=false;
   var x;
   for (x in fixurl){
      if (fixurl[x]==url){
         result=true;
      }
   }
   retrun result;
}
//Use
if in_array(url,fixurl){
   // url nằm trong fixurl
}else{
   // url ko nằm trong fixurl
}
Mình vẫn chưa hiểu lắm cách sử dụng của code trên bạn ak, có thể giúp mình cho url vào đâu ở trên được không, mình cho thử vào để tes thì nó bão lỗi không tìm thấy đối tượng.
freshgraduate09 viết 11:58 ngày 10/10/2018
function in_aray(url,fixurl){
var result=false;
var x;
for (x in fixurl){
if (fixurl[x]==url){
result=true;
}
}
retrun result;
}
người viết hàm này đầu óc có vấn đề

hàm trên kiểm tra có url trong mảng fixurl hay không, trả về true false

nếu tại fixurl[k] đã thấy khớp với url thì trả về true ngay, nếu lặp tiếp tục thì câu lệnh trong if hoặc không làm gì hết, hoặc tiếp tục gán true cho result mặc dù result chứa true rồi, vậy tại sao phải vét hết mảng làm gì trong khi đã có kq -> bác này chả hiểu gì về lập trình vòng lặp, chỉ làm như cái máy thôi

Ví dụ chỗ tai hai, có 1000 elements trong fixurl, trong khi url khớp với elements thứ 3, nó phải chạy tiếp 997 lần mặc dù chả cần thiết

Fix:
function in_aray(url,fixurl){
var x;
for (x in fixurl){
if (fixurl[x]==url){
return true; // thấy khớp trả về true luôn, khỏi lặp gì nữa
}
}
retrun false; // vét hết mà ko thấy khớp thì trả về false
}
hoặc là

function in_aray(url,fixurl){
var result=false;
var x;
for (x in fixurl){
if (fixurl[x]==url){
result=true; // thấy khớp gán true
break; // terminal vòng lặp luôn
}
}
return result; // báo kết quả
}
bachcotsau viết 12:07 ngày 10/10/2018
Code mình cho vào như vậy có phải không, sao nó vẫn không hoạt động.
Code:
var fixurl = new 
	Array('link1','link2','link3','link4','link5');
var url= new 
	Array('link1');
function in_aray(url,fixurl){
var x;
for (x in fixurl){
if (fixurl[x]==url){
alert(url);
return true; // thấy khớp trả về true luôn, khỏi lặp gì nữa
}
}
retrun false; // vét hết mà ko thấy khớp thì trả về false
}
Shellingfox viết 12:08 ngày 10/10/2018
Bạn phải làm như vầy:
Code:
function inArray( elem, array ) {
  for ( var i = 0, length = array.length; i < length; i++ )
  // Use === because on IE, window == document
  if ( array[ i ] === elem )
    return true;

    return false;
}
var fixurl = new Array('link1','link2','link3','link4','link5');
var url= 'link1';
if(inArray(url, fixurl)) {
  // in Url
  alert('Found');
}
Bài liên quan
0