每日记载内容总结25

1.部分js知识:(来源:http://kb.cnblogs.com/page/187757/)

(1)replace方法的标志位:字符串的 replace 方法并不会 替换所有匹配的子串——而仅仅替换第一次匹配。

var str = "David is an Arsenal fan, which means David is great";  
str.replace("David", "Darren"); // "Darren is an Arsenal fan, which means David is great"  

这里可以使用正则表达式,并且需要加上一个全局标志位(/g)来实现:

 var str = "David is an Arsenal fan, which means David is great";  
 str.replace(/David/g, "Darren"); // "Darren is an Arsenal fan, which means Darren is great"  

另一个基本的逻辑错误就是在大小写不敏感的校验场合(字母可大写可小写)没有忽略大小写,此时 /i 标志位就很实用:

 var str = "David is an Arsenal fan, which means David is great";  
str.replace(/david/gi, "Darren"); // "Darren is an Arsenal fan, which means Darren is great"

(2)数组的sort方法功能强大:

简单应用:

 [1, 3, 9, 2].sort();
    // 返回 [1, 2, 3, 9]

更强大的方法:

 [  
        { name: "Robin Van PurseStrings", age: 30 },  
        { name: "Theo Walcott", age: 24 },  
        { name: "Bacary Sagna", age: 28  }  
    ].sort(function(obj1, obj2) { 
        // 实现增序排列:前者的 age 小于后者  
        return obj1.age - obj2.age;  
    });  
        // Returns:    
        // [  
        //    { name: "Theo Walcott", age: 24 },  
        //    { name: "Bacary Sagna", age: 28  },  
        //    { name: "Robin Van PurseStrings", age: 30 }  
    // ]  

不仅可以对简单类型的数组项进行排序,可以通过属性来排序对象。对json数据的排序,可用试下

(3)JavaScript的传对象知识传引用,对数组操作时,要区分创建新对象还是清空数组

var myArray = yourArray = [1, 2, 3];  
 myArray = []; // `yourArray` 仍然是 [1, 2, 3]  
// 正确的方法是保持引用  
myArray.length = 0;  // `yourArray` 和 `myArray`(以及其它所有对这个数组的引用)都变成 [ ] 了  

(4)使用push来整合数组:简单的原生方法就可以实现数组合并这样的常见任务

 var mergeTo = [4,5,6];  
 var mergeFrom = [7,8,9];        
 Array.prototype.push.apply(mergeTo, mergeFrom);        
 mergeTo; // is: [4, 5, 6, 7, 8, 9]  

(5)preventDefault() 方法阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交)。

event.preventDefault()  event 必需。规定阻止哪个事件的默认动作。这个 event 参数来自事件绑定函数.

event.preventDefault()
该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)。例如,如果 type 属性是 "submit",在事件传播的任意 阶段可以调用任意的事件句柄,通过调用该方法,可以阻止提交表单。注意,如果 Event 对象的 cancelable 属性是 fasle,那么就没 有默认动作,或者不能阻止默认动作。无论哪种情况,调用该方法都没有作用。

event.stopPropagation()
该方法将停止事件的传播,阻止它被分派到其他 Document 节点。在事件传播的任何阶段都可以调用它。注意,虽然该方法不能阻止同一个 Document 节点上的其他事件句柄被调用,但是它可以阻止把事件分派到其他节点。

event是DOM的事件方法,所以不是单独使用,比如指定DOM

2.各种小问题,各种细节:

(1)java设置时间的时区为格林尼治时间(输出结果与pc的时间相差8小时)

Date date = new Date(System.currentTimeMillis());
SimpleDateFormat   matter1=new   SimpleDateFormat( "   'time ':yyyy-MM-dd  HH:mm:ss   z"); 
matter1.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("currentDate : "+matter1.format(date));

(2)Arrays.copyOf 可用复制数组(两个参数:第一个是要复制的数组,第二个是新数组的长度)

String value = "aaa ccc bbb ddd";
String[] valueCut = value.split(" ");
String[] valueAll = new String[valueCut.length+1];
valueAll  = Arrays.copyOf(valueCut,valueCut.length+1);
System.out.println(valueAll.length);
valueAll[valueCut.length] = value ;
for (int i = 0; i < valueAll.length; i++) {
    System.out.println(valueAll[i]);
}
//输出:
5
aaa
ccc
bbb
ddd
aaa ccc bbb ddd

(3)实现原比例放缩(适合图片放大缩小处理)

package test;

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;

public class Testbli {
    public static BigDecimal  resultWidth  ;
    public static BigDecimal  resultHeight ;
    public static void getbili(BigDecimal  width ,BigDecimal  height , BigDecimal  targetWidth ,BigDecimal  targetHeight){
        MathContext mc = new MathContext(5, RoundingMode.HALF_UP);//四舍五入
        BigDecimal scale1 = width.divide(height,mc);
        BigDecimal scale2 = targetWidth.divide(targetHeight,mc) ;
            if (scale1.compareTo(scale2) == 1) {
                resultWidth = targetWidth ;
                resultHeight = targetWidth.multiply(height).divide(width,mc);
            }else {
                resultHeight = targetHeight ;
                resultWidth = targetHeight.multiply(width).divide(height,mc) ;
            }
            BigDecimal result1 = resultWidth.divide(resultHeight,mc);
            System.out.println(resultWidth +"---"+ resultHeight);
            System.out.println(result1+"---"+scale1);
    }
    public static void main(String[] args) {
        getbili( new BigDecimal(633), new BigDecimal(983), new BigDecimal(200), new BigDecimal(400));
    }
}
//输出:
200---310.58
0.64396---0.64395//原比例

(4)得到字符串每个字符的ascll码

String string = "aa-b";
for (int i = 0; i < string.length(); i++) {
    int str=string.charAt(i);
    System.out.println(str);
}

(5)除法保留任意位小数,且可以取double值和float值

package test;

import java.math.BigDecimal;
import java.text.NumberFormat;

public class Testxiaoshu {
     public static void main(String[] args) {
          // 除数
          BigDecimal bd = new BigDecimal(1);
          // 被除数
          BigDecimal bd2 = new BigDecimal(3);
          // 进行除法运算,保留200位小数,末位使用四舍五入方式,返回结果
          BigDecimal result = bd.divide(bd2, 200, BigDecimal.ROUND_HALF_UP);

          System.out.println("完整200位小数结果: " + result);
          System.out.println("float           : " + result.floatValue());
          System.out.println("double          : " + result.doubleValue());

          // 指定想要的小数位长度取值
          NumberFormat nf = NumberFormat.getNumberInstance();
          nf.setMaximumFractionDigits(20);// 最大小数位
          nf.setMinimumFractionDigits(5); // 最小小数位
          String str = nf.format(result);
          System.out.println("指定位数取值: " + str);

         }
}
//输出:
完整200位小数结果: 0.83333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
float           : 0.8333333
double          : 0.8333333333333334
指定位数取值: 0.8333333333
原文地址:https://www.cnblogs.com/cuiyf/p/3442421.html