Array对象用于在单个变量中储存多个值,本文主要和大家分享Array对象用于在单个变量中储存多个值,希望能帮助到大家。
创建Array对象的语法
var arr1 = new Array(); // 创建空数组var arr2 = new Array(5); // 创建长度5 var arr3 = new Array(1,2,3,4,5); // 等价于var arr3 = new Array[1,2,3,4,5];var arr4 = new Array("5");// 等价于var arr4 = new Array["5"]; console.log(arr1,arr2,arr3,arr4);// 属性 length 数组的长度console.log(arr2.length);
方法
push/pop
push/pop 对数组末尾添加/删除元素push():向数组的末尾添加一个或更多元素,并返回新的长度 var newLength = arr5.push(6,7,8); console.log(arr5); //结果:[4,5,6,7,8]pop():删除并返回数组的最后一个元素 var num = arr5.pop(); console.log(arr5.length,num);// 结果:4,8
unshift()/shift()
unshift():向数组的开头添加一个或更多元素,并返回新的长度 var b = arr5.unshift(1,2,3); console.log(b); //结果:7shift():删除并返回数组的第一个元素 var c = arr5.shift(); console.log(c); //结果:1
sort()
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说的精确点,是按照字符编码的顺序进行排序.要实现这一点,首先应把数组的元素都换成字符串,以便进行比较 例1:<script type="text/javascript"> var arr = new Array(6); arr[0] = "George"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = "James"; arr[4] = "Adrew"; arr[5] = "Martin"; console.log(arr); console.log(arr.sort());</script>结果: George,John,Thomas,James,Adrew,Martin Adrew,George,James,John,Martin,Thomas 例2:<script type="text/javascript">var arr = new Array(6); arr[0] = "10"; arr[1] = "5"; arr[2] = "40"; arr[3] = "25"; arr[4] = "1000"; arr[5] = "1"; console.log(arr); console.log(arr.sort());</script>结果: 10,5,40,25,1000,1 1,10,1000,25,40,5 例3:<script type="css/javascript"> var arr = new Array(6); arr[0] = 10; arr[1] = 5; arr[2] = 40; arr[3] = 25; arr[4] = 1000; arr[5] = 1; console.log(arr); console.log(arr.sort())</script>结果: 10 5 40 25 1000 1 1 5 10 25 40 1000 如果要对上面的数进行倒序排列或者上面的数字都是字符串,然后根据数字大小进行排列,代码如下: function sortNum(a,b){ return a-b; } arr.sort(sortNum); 或者: arr.sort(function(a,b){ return a - b; });
splice
arrayObject.splice(index,howmany,item1,....,itemX); 说明:splice()方法可删除从index处开始的零个或者多个元素,并且用参数列表声明的一个或多个值来替换哪些被删除的元素,howmany的值与item的数量不需要一定保持一致. 如果从arrayObject中删除了元素,则返回的是含有被删除元素的数组.<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> </style> </head> <body> </body> <script type="text/javascript"> var arr = new Array(5); arr[0] = "ds"; arr[1] = "er"; arr[2] = "ty"; arr[3] = "uq"; arr[4] = "yt"; var array = arr.splice(1,0,"qq","ww"); console.log(array); console.log(arr); </script> </html>结果:["ds", "qq", "ww", "er", "ty", "uq", "yt"]
JavaScript Math对象
Math对象并不像Date和String那样是对象的类,因此没有构造函数Math(),像Math.sin()这样的函数只是函数,不是某个对象的方法. 你无需创建它,通过把Math作为对象使用就可以调用其所有属性和方法.
<script type="text/javascript"> // 取π的值 var pi_value = Math.PI; console.log(pi_value); // 结果:3.141592653589793 // 求一个数的平方 var sqrt_value = Math.sqrt(15); console.log(sqrt_value); // 结果:3.872983346207417 // 求一个数的绝对值 var abs_value = Math.abs(-5); console.log(abs_value); // 结果:5 // 向上取整 console.log(Math.ceil(5.1)); // 6 console.log(Math.ceil(5.5)); // 6 console.log(Math.ceil(5.9)); // 6 console.log(Math.ceil(5)); // 5 console.log(Math.ceil(-5.1)); // -5 console.log(Math.ceil(-5.9)); // -5 // 向下去整 floor(x) // 把数四舍五入为最接近的整数 Math.round(x) // Math.random() 返回0-1直接的随机数 </script>
JavaScript Date对象
<script type="text/javascript"> var date1 = new Date("2016-9-1"); var date2 = new Date("2016-9-30"); // 两个日期相减得到的时间差,单位是毫秒 var res = date2 - date1; console.log(res/1000/3600/24 + 1); //30 // 从Date对象中,以四位数字返回年份 var time = date1.getFullYear(); console.log(time); //2016 // 从Date对象中返回一个月中的某一天 var d = date1.getDate(); date1.setDate(d + 5); console.log(date1); //结果:Tue Sep 06 2016 00:00:00 GMT+0800 (CST) // 根据世界时,把 Date 对象转换为字符 var date3 = new Date(); console.log(date3); //结果:Fri Mar 09 2018 20:19:46 GMT+0800 (CST) console.log(date3.toUTCString()); //结果:Fri, 09 Mar 2018 12:19:46 GMT </script>
JavaScript String对象
<script type="text/javascript"> // anchor()创建HTML锚 var txt = "hello World"; console.log(txt.anchor("text")); // 结果:<a name="text">hello World</a> var str="Hello world!" console.log(str.length); //结果:12</script>
正则运算符
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> </style> </head> <body> </body> <script type="text/javascript"> // reg = /正则部分(定义的规则)/正则属性 // g 全局匹配 加i 就不区分大小写 var reg = /test/g; var str = " hellotesthowareTestyoutest"; console.log(str.match(reg)); // 结果:["test", "test"] var reg = /test/gi; console.log(str.match(reg)); //结果:["test", "Test", "test"] // \d代表数字 var reg = /\d/g; var str = "sdafsdgdf15dfbgsd566189safg4ag"; console.log(str.match(reg)); //结果:["1", "5", "5", "6", "6", "1", "8", "9", "4"] // \w代表单词字符:数字 字母 下划线 var reg = /\w/g; var str = "dsf457__fgbd_1"; console.log(str.match(reg)); // 结果:["d", "s", "f", "4", "5", "7", "_", "_", "f", "g", "b", "d", "_", "1"] // \.代表除去换行符的任意字符 (\n换行 \t 大空格 \b 退格符 \\代表是一个反斜杠) var reg4 = /./g; var str4 = "\n\teH3_-=+_*/,.`() *&....%$#@!!^&\\"; //结果:[" ", "e", "H", "3", "_", "-", "=", "+", "_", "*", "/", ",", ".", "`", "(", ")", " ", "*", "&", ".", ".", ".", ".", "%", "$", "#", "@", "!", "!", "^", "&", "\"] console.log(str4.match(reg4)); //\s只要出现空白就匹配 \S只要不出现空白就匹配 var reg5 = /\s/g; console.log(str4.match(reg5)); //结果: ["↵", " ", " "] //var reg6 = /\w{6,12}/g; 可以作为用户名规则 6-12位 var reg6 = /\d{2,3}/g; var str6 = "3409800ru2h404"; console.log(str6.match(reg6)); //小括号 代表 只匹配 括号中的元素. // var reg9 = /(34)|(32)/g // var reg9 = /3(4)|3(2)/g = var reg9 = /3[24]/g 他们是等价的 var reg9 = /3(4)|3(2)/g; var str9 = "34876543323752677"; console.log(str9.match(reg9)); //开头和结尾 只找第一位元素 如果找不到就回返回空 var reg10 = /^34/g; var str10 = "434349852342323"; console.log(str10.match(reg10)); //开头和结尾 只找最后一位元素 如果找不到就回返回空 var reg10 = /34$/g; var str10 = "34349852342323"; console.log(str10.match(reg10)); //开头和结尾 同时用就代表 只找括号中的元素.如果没有返回空. var reg10 = /^34$/g; var str10 = "34"; console.log(str10.match(reg10)); //限制字符串长度 var reg10 = /^\d{11}$/g; var str10 = "34349852342"; console.log(str10.match(reg10)); // 匹配 3 到 6 长度的字符串 var reg10 = /^\d{3,6}$/g; var str10 = "343498"; console.log(str10.match(reg10)); //11位 纯数字的电话号码. 1开头 第二位是3-8 之间的数字. var reg11 = /^1(3[10379]|4[7]|5[0258]|6[1]|7[378]|8[029])\d{8}/g; var str11 = "14755123198"; console.log(str11.match(reg11)); //[a-z]所有的小写字母 //[A-Z]所有的大写字母 //邮箱 //(4-10为单词字符 , 开头必须是字母)@ //@qq @163. cn com //XXX@qq.com.cn </script></html>
JS对象
JavaScript Array对象
Array对象用于在单个变量中储存多个值
创建Array对象的语法
var arr1 = new Array(); // 创建空数组var arr2 = new Array(5); // 创建长度5 var arr3 = new Array(1,2,3,4,5); // 等价于var arr3 = new Array[1,2,3,4,5];var arr4 = new Array("5");// 等价于var arr4 = new Array["5"]; console.log(arr1,arr2,arr3,arr4);// 属性 length 数组的长度console.log(arr2.length);
方法
push/pop
push/pop 对数组末尾添加/删除元素push():向数组的末尾添加一个或更多元素,并返回新的长度 var newLength = arr5.push(6,7,8); console.log(arr5); //结果:[4,5,6,7,8]pop():删除并返回数组的最后一个元素 var num = arr5.pop(); console.log(arr5.length,num);// 结果:4,8
unshift()/shift()
unshift():向数组的开头添加一个或更多元素,并返回新的长度 var b = arr5.unshift(1,2,3); console.log(b); //结果:7shift():删除并返回数组的第一个元素 var c = arr5.shift(); console.log(c); //结果:1
sort()
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说的精确点,是按照字符编码的顺序进行排序.要实现这一点,首先应把数组的元素都换成字符串,以便进行比较 例1:<script type="text/javascript"> var arr = new Array(6); arr[0] = "George"; arr[1] = "John"; arr[2] = "Thomas"; arr[3] = "James"; arr[4] = "Adrew"; arr[5] = "Martin"; console.log(arr); console.log(arr.sort());</script>结果: George,John,Thomas,James,Adrew,Martin Adrew,George,James,John,Martin,Thomas 例2:<script type="text/javascript">var arr = new Array(6); arr[0] = "10"; arr[1] = "5"; arr[2] = "40"; arr[3] = "25"; arr[4] = "1000"; arr[5] = "1"; console.log(arr); console.log(arr.sort());</script>结果: 10,5,40,25,1000,1 1,10,1000,25,40,5 例3:<script type="css/javascript"> var arr = new Array(6); arr[0] = 10; arr[1] = 5; arr[2] = 40; arr[3] = 25; arr[4] = 1000; arr[5] = 1; console.log(arr); console.log(arr.sort())</script>结果: 10 5 40 25 1000 1 1 5 10 25 40 1000 如果要对上面的数进行倒序排列或者上面的数字都是字符串,然后根据数字大小进行排列,代码如下: function sortNum(a,b){ return a-b; } arr.sort(sortNum); 或者: arr.sort(function(a,b){ return a - b; });
splice
arrayObject.splice(index,howmany,item1,....,itemX); 说明:splice()方法可删除从index处开始的零个或者多个元素,并且用参数列表声明的一个或多个值来替换哪些被删除的元素,howmany的值与item的数量不需要一定保持一致. 如果从arrayObject中删除了元素,则返回的是含有被删除元素的数组.<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> </style> </head> <body> </body> <script type="text/javascript"> var arr = new Array(5); arr[0] = "ds"; arr[1] = "er"; arr[2] = "ty"; arr[3] = "uq"; arr[4] = "yt"; var array = arr.splice(1,0,"qq","ww"); console.log(array); console.log(arr); </script> </html>结果:["ds", "qq", "ww", "er", "ty", "uq", "yt"]
JavaScript Math对象
Math对象并不像Date和String那样是对象的类,因此没有构造函数Math(),像Math.sin()这样的函数只是函数,不是某个对象的方法. 你无需创建它,通过把Math作为对象使用就可以调用其所有属性和方法.
<script type="text/javascript"> // 取π的值 var pi_value = Math.PI; console.log(pi_value); // 结果:3.141592653589793 // 求一个数的平方 var sqrt_value = Math.sqrt(15); console.log(sqrt_value); // 结果:3.872983346207417 // 求一个数的绝对值 var abs_value = Math.abs(-5); console.log(abs_value); // 结果:5 // 向上取整 console.log(Math.ceil(5.1)); // 6 console.log(Math.ceil(5.5)); // 6 console.log(Math.ceil(5.9)); // 6 console.log(Math.ceil(5)); // 5 console.log(Math.ceil(-5.1)); // -5 console.log(Math.ceil(-5.9)); // -5 // 向下去整 floor(x) // 把数四舍五入为最接近的整数 Math.round(x) // Math.random() 返回0-1直接的随机数 </script>
JavaScript Date对象
<script type="text/javascript"> var date1 = new Date("2016-9-1"); var date2 = new Date("2016-9-30"); // 两个日期相减得到的时间差,单位是毫秒 var res = date2 - date1; console.log(res/1000/3600/24 + 1); //30 // 从Date对象中,以四位数字返回年份 var time = date1.getFullYear(); console.log(time); //2016 // 从Date对象中返回一个月中的某一天 var d = date1.getDate(); date1.setDate(d + 5); console.log(date1); //结果:Tue Sep 06 2016 00:00:00 GMT+0800 (CST) // 根据世界时,把 Date 对象转换为字符 var date3 = new Date(); console.log(date3); //结果:Fri Mar 09 2018 20:19:46 GMT+0800 (CST) console.log(date3.toUTCString()); //结果:Fri, 09 Mar 2018 12:19:46 GMT </script>
JavaScript String对象
<script type="text/javascript"> // anchor()创建HTML锚 var txt = "hello World"; console.log(txt.anchor("text")); // 结果:<a name="text">hello World</a> var str="Hello world!" console.log(str.length); //结果:12</script>
正则运算符
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> </style> </head> <body> </body> <script type="text/javascript"> // reg = /正则部分(定义的规则)/正则属性 // g 全局匹配 加i 就不区分大小写 var reg = /test/g; var str = " hellotesthowareTestyoutest"; console.log(str.match(reg)); // 结果:["test", "test"] var reg = /test/gi; console.log(str.match(reg)); //结果:["test", "Test", "test"] // \d代表数字 var reg = /\d/g; var str = "sdafsdgdf15dfbgsd566189safg4ag"; console.log(str.match(reg)); //结果:["1", "5", "5", "6", "6", "1", "8", "9", "4"] // \w代表单词字符:数字 字母 下划线 var reg = /\w/g; var str = "dsf457__fgbd_1"; console.log(str.match(reg)); // 结果:["d", "s", "f", "4", "5", "7", "_", "_", "f", "g", "b", "d", "_", "1"] // \.代表除去换行符的任意字符 (\n换行 \t 大空格 \b 退格符 \\代表是一个反斜杠) var reg4 = /./g; var str4 = "\n\teH3_-=+_*/,.`() *&....%$#@!!^&\\"; //结果:[" ", "e", "H", "3", "_", "-", "=", "+", "_", "*", "/", ",", ".", "`", "(", ")", " ", "*", "&", ".", ".", ".", ".", "%", "$", "#", "@", "!", "!", "^", "&", "\"] console.log(str4.match(reg4)); //\s只要出现空白就匹配 \S只要不出现空白就匹配 var reg5 = /\s/g; console.log(str4.match(reg5)); //结果: ["↵", " ", " "] //var reg6 = /\w{6,12}/g; 可以作为用户名规则 6-12位 var reg6 = /\d{2,3}/g; var str6 = "3409800ru2h404"; console.log(str6.match(reg6)); //小括号 代表 只匹配 括号中的元素. // var reg9 = /(34)|(32)/g // var reg9 = /3(4)|3(2)/g = var reg9 = /3[24]/g 他们是等价的 var reg9 = /3(4)|3(2)/g; var str9 = "34876543323752677"; console.log(str9.match(reg9)); //开头和结尾 只找第一位元素 如果找不到就回返回空 var reg10 = /^34/g; var str10 = "434349852342323"; console.log(str10.match(reg10)); //开头和结尾 只找最后一位元素 如果找不到就回返回空 var reg10 = /34$/g; var str10 = "34349852342323"; console.log(str10.match(reg10)); //开头和结尾 同时用就代表 只找括号中的元素.如果没有返回空. var reg10 = /^34$/g; var str10 = "34"; console.log(str10.match(reg10)); //限制字符串长度 var reg10 = /^\d{11}$/g; var str10 = "34349852342"; console.log(str10.match(reg10)); // 匹配 3 到 6 长度的字符串 var reg10 = /^\d{3,6}$/g; var str10 = "343498"; console.log(str10.match(reg10)); //11位 纯数字的电话号码. 1开头 第二位是3-8 之间的数字. var reg11 = /^1(3[10379]|4[7]|5[0258]|6[1]|7[378]|8[029])\d{8}/g; var str11 = "14755123198"; console.log(str11.match(reg11)); //[a-z]所有的小写字母 //[A-Z]所有的大写字母 //邮箱 //(4-10为单词字符 , 开头必须是字母)@ //@qq @163. cn com //XXX@qq.com.cn </script></html>
相关推荐:
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
JavaScript对象深度剖析以及深度理解js对象的实例分享
Atas ialah kandungan terperinci JS对象与正则运算符实例详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

JavaScript digunakan secara meluas di laman web, aplikasi mudah alih, aplikasi desktop dan pengaturcaraan sisi pelayan. 1) Dalam pembangunan laman web, JavaScript mengendalikan DOM bersama -sama dengan HTML dan CSS untuk mencapai kesan dinamik dan menyokong rangka kerja seperti JQuery dan React. 2) Melalui reaktnatif dan ionik, JavaScript digunakan untuk membangunkan aplikasi mudah alih rentas platform. 3) Rangka kerja elektron membolehkan JavaScript membina aplikasi desktop. 4) Node.js membolehkan JavaScript berjalan di sisi pelayan dan menyokong permintaan serentak yang tinggi.

Python lebih sesuai untuk sains data dan automasi, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python berfungsi dengan baik dalam sains data dan pembelajaran mesin, menggunakan perpustakaan seperti numpy dan panda untuk pemprosesan data dan pemodelan. 2. Python adalah ringkas dan cekap dalam automasi dan skrip. 3. JavaScript sangat diperlukan dalam pembangunan front-end dan digunakan untuk membina laman web dinamik dan aplikasi satu halaman. 4. JavaScript memainkan peranan dalam pembangunan back-end melalui Node.js dan menyokong pembangunan stack penuh.

C dan C memainkan peranan penting dalam enjin JavaScript, terutamanya digunakan untuk melaksanakan jurubahasa dan penyusun JIT. 1) C digunakan untuk menghuraikan kod sumber JavaScript dan menghasilkan pokok sintaks abstrak. 2) C bertanggungjawab untuk menjana dan melaksanakan bytecode. 3) C melaksanakan pengkompil JIT, mengoptimumkan dan menyusun kod hot-spot semasa runtime, dan dengan ketara meningkatkan kecekapan pelaksanaan JavaScript.

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Dreamweaver CS6
Alat pembangunan web visual

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.