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