2020年5月

function RandomFile($folder='', $extensions='.*'){
  // fix path:
  $folder = trim($folder);
  $folder = ($folder == '') ? './' : $folder;
  // check folder:
  if (!is_dir($folder)){ die('invalid folder given!'); }
  // create files array
  $files = array();
  // open directory
  if ($dir = @opendir($folder)){
    // go trough all files:
    while($file = readdir($dir)){
      if (!preg_match('/^\.+$/', $file) and 
        preg_match('/\.('.$extensions.')$/', $file)){
        // feed the array:
        $files[] = $file;        
      }      
    }    
    // close directory
    closedir($dir);  
  }
  else {
    die('Could not open the folder "'.$folder.'"');
  }
  if (count($files) == 0){
    die('No files where found :-(');
  }
  // seed random function:
  mt_srand((double)microtime()*1000000);
  // get an random index:
  $rand = mt_rand(0, count($files)-1);
  // check again:
  if (!isset($files[$rand])){
    die('Array index was not found! very strange!');
  }
  // return the random file:
  return $folder . $files[$rand];
}

//用法演示:
// "jpg|png|gif" matches all files with these extensions
print RandomFile('test_images/','jpg|png|gif');
// returns test_07.gif
// ".*" matches all extensions (all files)
print RandomFile('test_files/','.*');
// returns foobar_1.zip
// "[0-9]+" matches all extensions that just 
// contain numbers (like backup.1, backup.2)
print RandomFile('test_files/','[0-9]+');
// returns backup.7

做app更新检测时,我想在lib.js使用uView的Http请求插件

首先我在main.js中use了uview这个UI框架。

//main.js
import uView from 'uview-ui';
Vue.use(uView);

于是我在lib.js中引入vue,实例化后,就可以使用挂载在vue上的属性和方法了

//lib.js
let vm = new Vue();
const update = function() {
    console.log('check update');
 
    vm.$u.get('/update',{
        appid:plus.runtime.appid,
        version:plus.runtime.version
    }).then(res=>{
        if(res){
            vm.$u.route({
                url:'/pages/update/update',
                animationType:'fade-in',
                params:res
            })
        }
    })
}

import Vue from 'vue'; //引入vue
export default {
    update
}

 const arr1 = [33, 11, 55, 22, 66]; 
 const arr2 = [{age: 55}, {age: 22}, {age: 11}, {age: 66}, {age: 33}]
 
 console.log('排序前arr2 => ', arr2) 

 // 排序 arr2
 arr2.sort((prev, next) => {
   const p = arr1.indexOf(prev.age)
   const n = arr1.indexOf(next.age)
   return p - n
 })
 console.log('排序后arr2 => ', arr2)
 console.log('     arr1 => ', arr1)

注意这里的arr1里的元素类型必须与arr2里的类型一致,否则排序失效。

const array1 = [         {
                "type_id": 2,
                "type_name": "电视剧"
            },
            {
                "type_id": 4,
                "type_name": "动漫"
            },
            {
                "type_id": 1,
                "type_name": "电影"
            },
            {
                "type_id": 3,
                "type_name": "综艺"
            }];
const found = array1.find(e => e.type_id ===3 );
console.log(found);

运行结果

 { type_id: 3, type_name: "综艺" }