JavaScript编程题

1.数组去重
删除数组中重复的数字

 var arr=[1,4,2,6,6,9,0,1];
    function deleteDate(arr) {
        for(var i=0;i<arr.length;i++){
            if(arr.indexOf(arr[i])!=i){
                arr.splice(i,1);
                i--;
            }
        }
        return arr;
    }
    console.log(deleteDate(arr));//[1,4,2,6,9,0]

显示数组中重复的数字

    var arr=[1,3,2,4,1,5,2,1,0,5,2];
    function deleteData(arr) {
        for (var i=0;i<arr.length;i++){
            if (arr.indexOf(arr[i])!=i){
                arr.splice(i,1);
                i--;
            }
        }
        return arr;
    }
    function showData(arr){
        var result=[];
        for (var i=0;i<arr.length;i++){
            if (arr.indexOf(arr[i])!=i){
                result.push(arr[i]);
            }
        }
        return result;
    }
    var result=showData(arr);
    console.log(deleteData(result));
    console.log(deleteData(arr));

显示数组中数据重复的次数{apple: 2, orange: 3, pear: 1}

 var arr = ["apple","orange","apple","orange","pear","orange"];
 function getWordCnt(arr){
 	var result={};
 	for(var i=0;i<arr.length;i++){
 		var item=arr[i];
 		result[item]=(result[item]+1)||1;
 	}
 	return result;
 }
 console.log(getWordCnt(arr));//{apple: 2, orange: 3, pear: 1}

2.flex三栏布局(css)
两侧宽度固定,中间自适应宽度

<style type="text/css">
        .box{
            width: 600px;
            height: 400px;
            display: flex;
        }
        .left{
            width: 200px;
            background-color:red;
        }
        .right{
            width: 100px;
            background-color: black;
        }
        .middle{
            flex-grow: 1;
            background-color: blue;
        }
    </style>
</head>
<body>
<div class="box">
    <div class="left"></div>
    <div class="middle"></div>
    <div class="right"></div>
</div>

效果:
在这里插入图片描述
3.股票最大利润
假设有一个数组,他的第i个元素对应第i天的价格,如果最多只允许完成一次交易,设计一个算法找出最大利润
例:[7,1,5,3,6,4] 最大利润:5

function maxpProfit(arr){
	if(arr.length<=1)
		return 0;
	var max=0;
	for(var i=0;i<arr.length;i++){
		for(var j=i;j<arr.length;j++){
			var price=arr[j]-arr[i];
			if(price>max)
				max=price;
		}
	}
	return max;
}
var arr=[7,1,5,3,6,4] ;
console.log(maxProfit(arr));//5

多次交易:

function maxProfit(arr){
	if(arr.length<=1)
		return 0;
	var max=0;
	for(var i=1;i<arr.length;i++){
		var sum=arr[i]-arr[i-1];
		if(sum>0)
			max+=sum;
	
	}
	return max;
}
var arr=[7,1,5,3,6,4] ;
console.log(maxProfit(arr));//7

后续更新…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值