1.下面表达式包含字母,运算符和特殊符号 请计算下面的表达式 其他A的值设置为0 B为1 依次类推Z为25 特殊符号为0 例如: A+!=0+0 B+@=1+0
表达式: X-@+#-F+U-K+%+!+K-R 请写段代码计算表达式的值:
var stra = "X-@+#-F+U-K+%+!+K-R"
var flag=1
sum=0
for(var i=0;i<stra.length;i++){
if(stra[i]=='+'){
flag=1
}else if(stra[i]=='-')
{
flag=-1
}else if(stra.charCodeAt(i)>=65 && stra.charCodeAt(i)<=90){
sum += flag * (stra.charCodeAt(i)- 65);
}
}
console.log(sum)//输出21
2.let p1=[{name:'苹果',price:1.2,count:5},{name:'香蕉',price:2.3,count:3},]
let p2=[{name:'苹果',price:1.2,count:5},{name:'葡萄',price:3.5,count:2},]
//将两个数组合并,如果商品有一样的则把数量相加,
//最后按price*count得到的总价格由高到低输出商品名字,
//例如 苹果1.2*10 > 葡萄3.5*2 > 香蕉2.3*2,所以输出[苹果,葡萄,香蕉]
function combine(p1,p2){}
function combine(p1,p2){
//数组拼接
var array=p1.concat(p2)
//对象属性去重
for(var i=0;i<array.length;i++){
for(var j=i+1;j<array.length;j++){
if(array[i].name==array[j].name){
array[i].count+=array[j].count
array.splice(j,1)
j--}}}
//排序
var obj=[]
array.sort(function(a,b){
return (a.price*a.count)>(b.price*b.count)? 1 : -1
});
for(var i=0;i<array.length;i++){
obj.push(array[i].name)
}
console.log(obj)}
combine(p1,p2)
3.要求返回参数数字的千分位分隔符字符串,输入:_comma(12300),输出:'12,300'
function _comma(number) {
var str=Math.abs(number).toString().split('').reverse()
//未考虑小数情况
let i=3
while(i<str.length){
str.splice(i,0,',')
i+=4
}
let arr=str.reverse().join('')
console.log(arr)
return number>=0?arr:'-'+arr
}
_comma(123456)
4.//给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
//有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。
//每个右括号都有一个对应的相同类型的左括号。
var isValid = function(s) {
var len=(s.length)/2
for(let i=0;i<len;i++){
s = s.replace("()", "").replace("{}", "").replace("[]", "");
console.log(s)
return s.length== 0;
}
};
console.log(isValid('()[]'))//true
5.请补全JavaScript代码,该函数接收两个参数分别为旧版本、新版本,当新版本高于旧版本时表明需要更新,返回true,否则返回false。
注意:
1. 版本号格式均为"X.X.X"
2. X∈[0,9]
3. 当两个版本号相同时,不需要更新
const _shouldUpdate = (oldVersion, newVersion) => {
// 补全代码
oldVersion=oldVersion.split('.')
newVersion=newVersion.split('.')
return newVersion>oldVersion
}