سألني صديقي اليوم هذا السؤال: يجد JS بيانات مكررة من صفائف متعددة
ملحوظة:
1. أن تكون أكثر دقة ، طالما أن هناك أكثر من بيانات مكررة في صفائف متعددة ، فإن هذه البيانات هي ما أحتاجه
2. لا توجد قيمة مكررة في البيانات في صفيف واحد (بالطبع ، يمكنك تكريسها إذا كانت هناك قيمة)
3. قضية تستغرق وقتًا طويلاً ، هذا أمر مهم للغاية
رمز المصدر:
<! doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title> احصل على بيانات مكررة في صفائف متعددة </title> </head> <body> <body> <trecrip مللي ثانية من الفرق الزمني // احسب عدد أيام الفرق في أيام var = math.floor (Date3/(24*3600*1000)) دقائق = math.floor (LEEAD2/(60*1000)) // المللي ثانية المتبقية بعد عدد ساعات VAR MORES LEEAD3 = LEEFE2 ٪ (60*1000) // العائد المتبقي milliseconds بعد عدد الدقائق بعدد الدقائق = Math.Round (LEEF3/1000) مرة أخرى "الوقت:"+أيام+": "+LEEFE3 ٪ 1000 ؛ //+" "" ؛ } // إرجاع البيانات المكونة من الرقم بين min و max ، والطول هو الحد الأقصى min+1 (يتم إصلاح البيانات ، ولكن الترتيب وظيفة عشوائية) getarr (min ، max) {var arr = [] ؛ var numtopush = min ؛ لـ (var i = 0 ؛ i <max-min+1 ؛ i ++) {var len = arr.length ؛ if (len == 0) {arr.push (numTopush ++) ؛ } آخر {var randindex = math.floor (math.random ()*len) ؛ arr.push (numTopush ++) ؛ // واحد معين في تبادل ARR var مع آخر tmp = arr [randindex] ؛ arr [randindex] = arr [len] ؛ arr [len] = tmp ؛ }} return arr ؛ }. لـ (var i = 0 ؛ i <num ؛ i ++) {var randomnumber = math.floor (math.random ()*(max-min)+min) ؛ var inarr = false ؛ لـ (var i = 0 ؛ i <arr.length ؛ i ++) {if (arr [i] == randomnumber) {inarr = true ؛ num- ؛ استراحة؛ }} if (! inarr) {arr.push (randomnumber) ؛ }} return arr ؛ } // الحصول على وظيفة Data Data GetDumplicate () {var num = enduments.length ؛ if (num <2) {return [] ؛} ؛ var obj = {ret: [] ، // تخزين حاوية البيانات نفسها: [] // تخزين بيانات مختلفة} لـ (var i = 0 ؛ i <3 ؛ i ++) {// console.log (وسيطات [i]) ؛ var arr = وسيطات [i] ؛ OBJ = deal (arr ، obj) ؛ } إرجاع OBJ ؛ } // معالجة مجموعة واحدة ، وقارنها بالبيانات الموجودة في الحاوية ، والحصول على بيانات مكررة (المشكلة: حجم البيانات الكبير جدًا سيؤدي إلى الكثير من البيانات في حاوية) صفقة دالة (ARR ، OBJ) {var len = obj.container.length ؛ if (len == 0) {obj.container = arr ؛ } آخر {var arrlen = arr.length ؛ لـ (var j = 0 ؛ j <arrlen ؛ j ++) {// transf الصفيف ، تتم مقارنة كل عنصر مع الحاوية var conlen = obj.container.length ؛ var intocontainer = false ؛ لـ (var i = 0 ؛ i <conlen ؛ i ++) {var convalue = obj.container [i] ؛ if (arr [j] == convalue) {// RET RET OBJ.RET.PUSH (arr [j]) ؛ intocontainer = صحيح ؛ }} if (intocontainer &&! inarr (arr [j] ، obj.container)) {obj.container.push (arr [j]) ؛ // لا تكرار في الحاوية}}} إرجاع OBJ ؛ } // الكشف عما إذا كانت هذه البيانات موجودة بالفعل في وظيفة الصفيف Inarr (obj ، arr) {var arug = false ؛ var len = arr.length ؛ لـ (var i = 0 ؛ i <len ؛ i ++) {if (arr [i] == obj) {exeg = true ؛ }} عودة موجودة ؛ } // ----------------------------- 测试 ---------------------------------------------- var date = new date () ؛ var arr_a = getarr (1،20) ؛ var arr_b = getarr (18،35) ؛ var arr_c = getarr (34،50) ؛ var dumpdata = getDumPlicate (ARR_A ، ARR_B ، ARR_C) ؛ console.log (dumpdata.ret) ؛ //console.log(dumpdata.container) ؛ console.log (useTime (Date ، New Date ())) ؛ Console.log ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- USETIME (DATE1 ، DATE ()) ؛ نتيجة:
نحن نختبر المزيد من البيانات: يتم إنشاء 3 صفائف بشكل عشوائي ، ما مجموعه 3 واط من البيانات
نتيجة:
5 صفائف من 5W بيانات: (توزيع البيانات: 1W/Array)
5 صفائف من 10W بيانات: (توزيع البيانات: 5W ، 4W ، 3W ، 2W ، 1W)
10 صفائف 10 واط بيانات: (توزيع البيانات: 1W/Array)
100 صفيف 100 واط بيانات: (توزيع البيانات: 1W/صفيف)
ختاماً:
1. مقدار الوقت الذي يقضيه يعتمد على الخوارزمية الخاصة بك
2. عندما تظل إجمالي البيانات دون تغيير: حاول أن يكون لديك أكبر عدد ممكن من المصفوفات ، ويجب ألا يكون هناك الكثير من البيانات في صفيف واحد. بالطبع ، لا يمكن تعميمه.
3. في هذا الاختبار ، هناك مجموعة واحدة من بيانات 1W على ما يرام ، وبيانات 5W ليست ميتة ، و 10W بيانات هي يرجى الاتصال بـ Hua Tuo
سؤال:
1. تتم كتابة الخوارزمية مؤقتًا (في الواقع ، لا توجد خوارزمية^_^) ، ويجب تحسينها
2. يتم استخدام حاوية صفيف في رمز الاختبار لتخزين البيانات غير المدمرة.
ثم المشكلة هي: الكثير من البيانات سوف تسبب الكثير من البيانات في الحاوية ، ثم ... كما تعلمون.
3. يتم إنشاء بيانات الاختبار بشكل عشوائي والأرقام فقط. إذا كان كائنًا آخر ، فيرجى اختباره بشكل منفصل (بشكل رئيسي لأنه يصعب إنشاء بيانات الاختبار (⊙o⊙) ...)
4. مجموعة متعددة الأبعاد لم يتم اختبارها (قد لا يكون أداء الاختبار جيدًا 0_0)
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.