用 JS代码 求出1-1/2+1/3-1/4…..1/100的和
时间: 2023-10-01 14:06:58 浏览: 88
以下是使用 JavaScript 计算 1-1/2+1/3-1/4…..1/100 的和的代码:
```javascript
let sum = 0;
for (let i = 1; i <= 100; i++) {
if (i % 2 === 0) {
sum -= 1 / i;
} else {
sum += 1 / i;
}
}
console.log(sum);
```
输出结果为:
```
0.688172179310195
```
相关问题
用以下代码写一个轮播图<ul> <li><img src="../images/1.jpg" alt=""></li> <li><img src="../images/2.jpg" alt=""></li> <li><img src="../images/3.jpg" alt=""></li> <li><img src="../images/4.jpg" alt=""></li> <li><img src="../images/5.jpg" alt=""></li> <li><img src="../images/6.jpg" alt=""></li> </ul> <span class="prev">❮</span> <span class="next">❯</span> </div> <script src="../jquery-3.7.0.js"></script>
你可以使用以下代码来实现一个基本的轮播图:
```html
<div class="slideshow-container">
<ul class="slides">
<li><img src="../images/1.jpg" alt=""></li>
<li><img src="../images/2.jpg" alt=""></li>
<li><img src="../images/3.jpg" alt=""></li>
<li><img src="../images/4.jpg" alt=""></li>
<li><img src="../images/5.jpg" alt=""></li>
<li><img src="../images/6.jpg" alt=""></li>
</ul>
<span class="prev">❮</span>
<span class="next">❯</span>
</div>
<script src="../jquery-3.7.0.js"></script>
<script>
$(document).ready(function() {
var slideIndex = 1;
showSlides(slideIndex);
$(".prev").click(function() {
showSlides(slideIndex -= 1);
});
$(".next").click(function() {
showSlides(slideIndex += 1);
});
function showSlides(n) {
var i;
var slides = $(".slides li");
if (n > slides.length) {
slideIndex = 1
}
if (n < 1) {
slideIndex = slides.length
}
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slides[slideIndex - 1].style.display = "block";
}
});
</script>
```
CSS代码如下:
```css
.slideshow-container {
position: relative;
margin: auto;
}
.slides {
list-style: none;
padding: 0;
margin: 0;
}
.slides li {
display: none;
}
.prev, .next {
position: absolute;
top: 50%;
width: auto;
margin-top: -22px;
padding: 16px;
color: white;
font-weight: bold;
font-size: 18px;
transition: 0.6s ease;
border-radius: 0 3px 3px 0;
user-select: none;
}
.next {
right: 0;
border-radius: 3px 0 0 3px;
}
.prev:hover, .next:hover {
background-color: rgba(0, 0, 0, 0.8);
}
.slides li img {
width: 100%;
height: auto;
}
```
这里的核心是使用 JavaScript 来控制轮播图。`showSlides(n)` 函数用于显示当前轮播图,其中参数 `n` 表示轮播图的索引号。通过点击“上一页”和“下一页”按钮,可以切换轮播图。在这个例子中,我们使用了 jQuery 库来简化 JavaScript 代码。
import { Sha256 } from '@aws-crypto/sha256-js' import CryptoJs from 'crypto-js' import encHex from 'crypto-js/enc-hex' onmessage = async function (event) { const data = event.data // 获取文件数据 // chunk方式读取文件 const chunkSize: number = 1024 * 1024 // 每次读取1MB const fileSize: number = data.size // 文件大小 let offset: number = 0 // 偏移量 const createSha256Uint8Array32 = new Sha256() // SHA256 Unit8Array(32) const createSha1 = CryptoJs.algo.SHA1.create() // SHA1 Hex const createSha256 = CryptoJs.algo.SHA256.create() // SHA256 Hex const createSha512 = CryptoJs.algo.SHA512.create() // SHA512 Hex const createMD5 = CryptoJs.algo.MD5.create() // MD5 while (offset < fileSize) { const chunk = new Uint8Array(await data.slice(offset, offset + chunkSize).arrayBuffer()) // 读取chunkSize大小的文件块 const wordArray = CryptoJs.lib.WordArray.create(chunk) createSha256Uint8Array32.update(chunk) createSha1.update(wordArray) createSha256.update(wordArray) createSha512.update(wordArray) createMD5.update(wordArray) offset += chunkSize // 计算进度 // const progress = Math.min(100, Math.round((offset / fileSize) * 100)) // 计算进度 // console.log(progress) // 打印进度 // postMessage({ progress, offset, fileSize }) // 将进度发送给主线程 } const [sha256Uint8Array32, sha1, sha256, sha512, md5] = await Promise.all([ createSha256Uint8Array32.digest(), // SHA256 Unit8Array(32) encHex.stringify(createSha1.finalize()), // SHA1 Hex encHex.stringify(createSha256.finalize()), // SHA256 Hex encHex.stringify(createSha512.finalize()), // SHA512 Hex encHex.stringify(createMD5.finalize()), // MD5 ]) const obj = { md5, // MD5 sha1, // SHA1 Hex sha256, // SHA256 Hex sha512, // SHA512 Hex sha256Int8Array32: Array.from(new Int8Array(sha256Uint8Array32)), // SHA256 Int8Array(32) } console.log(obj) // 打印结果对象 postMessage(obj) // 将结果对象发送给主线程 } 增加功能计算 sm3
需要在代码中增加计算 SM3 哈希值的功能,可以使用第三方库 jsrsasign 来实现。具体步骤如下:
1. 在代码头部导入 jsrsasign 库:
```javascript
import { Sha256 } from '@aws-crypto/sha256-js'
import CryptoJs from 'crypto-js'
import encHex from 'crypto-js/enc-hex'
import { SM3 } from 'jsrsasign'
```
2. 在 while 循环中计算 SM3 哈希值:
```javascript
const createSM3 = new SM3() // 创建 SM3 对象
createSM3.updateBinary(chunk) // 输入文件块
```
3. 在 Promise.all 中加入 SM3 哈希值的计算:
```javascript
const [sha256Uint8Array32, sha1, sha256, sha512, md5, sm3] = await Promise.all([
createSha256Uint8Array32.digest(), // SHA256 Unit8Array(32)
encHex.stringify(createSha1.finalize()), // SHA1 Hex
encHex.stringify(createSha256.finalize()), // SHA256 Hex
encHex.stringify(createSha512.finalize()), // SHA512 Hex
encHex.stringify(createMD5.finalize()), // MD5
createSM3.digest() // SM3
])
```
4. 将 SM3 哈希值加入结果对象:
```javascript
const obj = {
md5, // MD5
sha1, // SHA1 Hex
sha256, // SHA256 Hex
sha512, // SHA512 Hex
sha256Int8Array32: Array.from(new Int8Array(sha256Uint8Array32)), // SHA256 Int8Array(32)
sm3: Array.from(new Int8Array(sm3)) // SM3 Int8Array
}
```
完整代码如下:
阅读全文