nodejs中对于数组的相关处理

nodejs中对于数组的相关处理,第1张

合并三个数组 - concat()()

用数组的元素组成字符串 - join()

删除数组的最后一个元素 - pop()

数组的末尾添加新的元素 - push()

将一个数组中的元素的顺序反转排序 - reverse()

删除数组的第一个元素 - shift()

从一个数组中选择元素 - slice()

数组排序(按字母顺序升序)- sort()

数字排序(按数字顺序升序)- sort()

数字排序(按数字顺序降序)- sort()

在数组的第2位置添加一个元素 - splice()

转换数组到字符串 -toString()

在数组的开头添加新元素 - unshift()

1.js 中, 0.1 + 0.2 === 0.3 是否为 true ?

2.const 定义的 Array 中间元素能否被修改?

const a = [1,2,3,4]

a[2] = 0 // [ 1,2,0,4] 中间元素可以修改

a.push(5) // [1,2,0,4,5]

var b = [] // 但是不能重新赋值数组首个元素的地址

a = b// Uncaught TypeError: Assignment to constant variable.

3.如何实现一个sleep函数?

4.怎么读取json配置文件?(data.json)

5.Buffer与base64互转

6.node上怎么使用shell命令

7.使用nodejs可以获取客户端连接的真实IP吗?为什么?如何获取?

// curl -i --location --request GET 'http://47.93.27.106:9998' -H 'X-Forwarded-For: 211.85.192.1'

8.Mongodb如何批量更新文档?

node.js文档 https://nodejs.org/docs/latest-v12.x/api/buffer.html

mongodb文档 https://docs.mongodb.com/v3.6/

node.js连接mongodb文档 http://mongodb.github.io/node-mongodb-native/3.6/api/

9.写一个读取文件和文件的方法

10.如何获取项目的根路径?

__dirname

process.execPath # /home/ubuntu/.nvm/versions/node/v8.11.2/bin/node

_dirname # /usr/ET/project/zktWeb

process.cwd() # /home/ubuntu

11.你有使用过express和koa吗?它俩有什么区别?

express有路由, koa通过中间件补充路由功能

Koa能使用async await, express不能

Koa有洋葱模型和ctx上下文, express没有

用过KOA, 实际项目没有用过express

在遍历数组时,使用某个函数依次对数据成员做一些处理也是常见的需求。如果函数是同步执行的,一般就会写出以下代码:

var len = arr.length,

i = 0

for (i <len++i) {

arr[i] = sync(arr[i])

}

// All array items have processed.

如果函数是异步执行的,以上代码就无法保证循环结束后所有数组成员都处理完毕了。如果数组成员必须一个接一个串行处理,则一般按照以下方式编写异步代码:

(function next(i, len, callback) {

if (i <len) {

async(arr[i], function (value) {

arr[i] = value

next(i + 1, len, callback)

})

} else {

callback()

}

}(0, arr.length, function () {

// All array items have processed.

}))

可以看到,以上代码在异步函数执行一次并返回执行结果后才传入下一个数组成员并开始下一轮执行,直到所有数组成员处理完毕后,通过回调的方式触发后续代码的执行。

如果数组成员可以并行处理,但后续代码仍然需要所有数组成员处理完毕后才能执行的话,则异步代码会调整成以下形式:

(function (i, len, count, callback) {

for (i <len++i) {

(function (i) {

async(arr[i], function (value) {

arr[i] = value

if (++count === len) {

callback()

}

})

}(i))

}

}(0, arr.length, 0, function () {

// All array items have processed.

}))

可以看到,与异步串行遍历的版本相比,以上代码并行处理所有数组成员,并通过计数器变量来判断什么时候所有数组成员都处理完毕了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11928675.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存