题给错了,(‘abCd’, ‘even’)应该返回 return aBCD。
function changeStringCase(source, position) {//由于字符串一经声明并赋值是不会变更的,因此将结果先保存入字符数组再在返回时转换为字符串
var charArray = []
for (var i = 0 i < source.length i++) {
if ((position == "odd" && (i % 2 == 0)) || (position == "even" && (i % 2 == 1))) {
charArray.push(changeCharCase(source[i]))
} else {
charArray.push(source[i])
}
}
return charArray.join("")
}
function changeCharCase(sourceChar) {
//取得char的ASCII码值
var charCode = sourceChar.charCodeAt()
if (65 <= charCode && charCode <= 90) {
//如果是大写字符
charCode += 32
} else if (97 <= charCode && charCode <= 122) {
//如果是小写字符
charCode -= 32
}
return String.fromCharCode(charCode)
}
document.write(changeStringCase("abCd", "odd"))
sort 方法
arrayobj.sort(sortfunction)
可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。
sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。
如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:
负值,如果所传递的第一个参数比第二个参数小。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大。
数组.sort(sortDOM)
function sortDOM(a,b){
//A商品价格
var priceNodeA=a.getElementsByClassName("price")[0]
//B商品价格
var priceNodeB=b.getElementsByClassName("price")[0]
var priceA=parseFloat(priceNodeA.innerHTML.substr(1))*1000
var priceB=parseFloat(priceNodeB.innerHTML.substr(1))*1000
//数字大小比较,定义比较规则(原理:字符转成ASCII值直接按数字比较大小)
//字符串放到数组中,用sort()方法默认按ASCII 字符顺序规则
//或者自己定义:比如截取每个字符串的第一个字符,转成ASCII值,比较数字大小,这里的规则就随便写了
return priceA-priceB
}