小编sno*_*dev的帖子

Javascript设置与阵列性能

这可能是因为集合对Javascript来说相对较新,但是我无法在StackO或其他任何地方找到一篇文章来讨论Javascript中两者之间的性能差异.那么,两者之间在性能方面有什么不同?具体来说,当涉及删除,添加和迭代时.

javascript arrays iteration performance set

66
推荐指数
6
解决办法
3万
查看次数

如何设置打开新文件夹或工作区时启用哪些扩展?

我有很多扩展,在任何给定的项目中,我发现自己可能使用其中的三分之一(如果我正在开发 Python 项目,我现在真的不需要与 JavaScript 相关的扩展,不是吗?) 。问题是,现在 VS Code 会加载并启用每个新项目开始时安装的每个扩展。我发现必须手动禁用项目不需要的所有扩展,这很痛苦。

有没有办法将 VS Code 设置为在打开新文件夹/工作区时仅启用某些扩展?我在文档中找不到有关该主题的任何内容,并且在查看首选项的扩展部分时,我找不到这样的功能。

visual-studio-code

24
推荐指数
2
解决办法
6296
查看次数

简单的Node/Express应用程序,功能编程方式(如何在JavaScript中处理副作用?)

关于JavaScript中的函数式编程理论有很多很好的文章.有些甚至包含代码示例,显示了命令式/面向对象编程和声明/函数式编程之间的区别.但我发现没有一个能够通过简单的JavaScript代码示例来展示如何处理Web应用程序中的副作用.没有现实世界的应用程序可以完全避免的副作用(数据库调用,登录到控制台,保存到一个文件,绘制到屏幕等),我有一个很难弄清楚它是如何在实践中完成的.

有博客文章和S/O答案(如下所示:如何在纯函数式编程中执行副作用?)触及现实世界中处理副作用的主题,但它们通常远非简单,不要包括代码示例或包含其他语言的代码示例(Haskell,Scala等).我没有为Node/JavaScript找到一个.

所以...给出以下非常简单的带有MongoDB数据库的Node/Express应用程序示例,必须实现哪些代码更改,以便这段代码完全反映当前的JavaScript函数编程最佳实践.特别是涉及处理数据库调用的路由/函数时.我希望你的答案能够帮助我和其他人更好地理解功能编程的"避免副作用"概念在实际JavaScript中的实际应用.

/*app.js*/

const express = require('express')
const app = express()
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

var greetingSchema = mongoose.Schema({
    greeting: String
});

var Greeting = mongoose.model('Greeting', greetingSchema);

app.get('/', function (req, res) {
  Greeting.find({greeting: 'Hello World!'}, function (err, greeting){
    res.send(greeting);
  });  
});

app.post('/', function (req, res) {
  Greeting.create({greeting: 'Wasssssssssssuuuuppppp'}, function (err, greeting){
  res.send(greeting);
  });      
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})
Run Code Online (Sandbox Code Playgroud)

javascript functional-programming mongodb node.js express

13
推荐指数
1
解决办法
4841
查看次数

蒙特卡洛树搜索算法中的转置表对 UCT 分数产生意外影响

因此,我使用 UCT 在蒙特卡罗树搜索算法中实现了转置表。这允许保持游戏状态的累积奖励值,无论在整个树中在何处以及多少次遇到它。这提高了收集到的特定游戏状态信息的质量。

唉,我注意到这给 UCT 的开发与探索选择阶段带来了某些问题。简而言之,分配给某个州的 UCT 分数会考虑访问父州的次数与访问子州(我们为其计算 UCT 分数)的次数之间的比率。从这张图中可以看出,在此输入图像描述当将状态从转置表拉入树的新创建的分支时,该比率完全不正常,子状态已被访问大量次(从树中的其他位置)并且父状态已被访问被访问的次数要少得多,这在技术上应该是不可能的。

因此,使用换位表并保留状态的累积奖励值有助于算法的利用部分做出更好的选择,但同时它会以潜在有害的方式扭曲算法的利用部分。您知道有什么方法可以解决这个意外问题吗?

algorithm tree hashmap graph-algorithm monte-carlo-tree-search

8
推荐指数
1
解决办法
1956
查看次数

如何在 JavaScript 浏览器中检查 pdf 文件是否为 US Legal 或 US Letter 格式

我在浏览器中运行。我有FileJavaScript 文件类型)类型application/pdf。我想检查 pdf 的格式是否为 US Letter(8.5 英寸 x 11 英寸)或 US Legal(8.5 英寸 x 14 英寸)(横向或纵向)。

我查看了jsPDF,虽然以编程方式创建 pdf 文档看起来很棒(这对于测试会派上用场),但我无法找到一种方法来使用它来解析现有 PDF 文件获取有关文档的信息(例如页面格式和方向)。

任何有助于实现我的目标的帮助都将受到赞赏,无论是使用jsPDF、另一个库还是普通 JS。

javascript browser pdf fileapi jspdf

7
推荐指数
1
解决办法
434
查看次数

如何在 Angular Nx 存储库中使用 Jest 测试 Swiper 库?

我有一个 Nx 存储库,其中包含 Angular 应用程序和 Jest 作为测试框架。该应用程序有一个使用Swiper 的组件库的组件。当尝试测试该组件时,我收到以下错误消息:

\n
  \xe2\x97\x8f Test suite failed to run\n\n    Jest encountered an unexpected token\n\n    Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\n\n    Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\n\n    By default "node_modules" folder is ignored …
Run Code Online (Sandbox Code Playgroud)

jestjs angular ts-jest nrwl-nx swiper.js

7
推荐指数
1
解决办法
1880
查看次数

Typescript 无法推断 Iterable 的 Iterable 的内部类型

这是一个简单的函数,它接受一个 Iterable of Iterables。

function unwrapFirst<T extends Iterable<U>, U>(iter: Iterable<T>): U {
  return [...[...iter][0]][0];
}

unwrapFirst([[1,2,3],[4,5,6]]);
Run Code Online (Sandbox Code Playgroud)

U我期望 TypeScript 能够正确推断出 as 的类型number,但它却将其推断为unknown。有人可以解释为什么吗?以及如何让 TypeScript 正确推断U

nested type-inference multidimensional-array typescript typescript-generics

6
推荐指数
1
解决办法
279
查看次数

多维数组与对象数组

我正在构建一个运行基于代理的模型的房地产市场模拟,我想跟踪单个交易,以便我可以使用数据创建图形和图表以及统计数据。我正在考虑使用一种我将调用的对象类型来做到这一点Transaction

var Transaction = function(house, askingPrice, soldPrice, daysOnMarket) {
    this.date = gameDate
    this.house = house
    this.askingPrice = askingPrice
    this.soldPrice = soldPrice
    this.daysOnMarket = daysOnMarket
};
Run Code Online (Sandbox Code Playgroud)

每次有交易时,它都会触发一个新Transaction对象实例的创建并被推送到transArray

transArray.push (new Transaction(house, askingPrice, soldPrice, daysOnMarket));
Run Code Online (Sandbox Code Playgroud)

这是为了我所述的目的而积累和存储这些数据的最佳方式还是使用二维数组更好,其中 y 是 the date,x 是 the house, askingPrice, soldPrice, daysOnMarket?您认为每种方法的优点和缺点是什么?

javascript arrays oop object multidimensional-array

5
推荐指数
1
解决办法
2252
查看次数

如何在同一个项目中将 Typescript 与 Angular CLI 和 Express/Node 一起使用?

我正在使用 Angular CLI 构建一个骨架 MEAN 项目。下面看一下文件夹结构和 tsconfig.json 文件。

在此处输入图片说明

现在,服务器目录中的服务器代码是用 JavaScript 编写的,我希望能够用 TypeScript 编写它。

在开发中,我通常会运行以下命令:

nodemon server.js
ng build --watch
Run Code Online (Sandbox Code Playgroud)

我想知道我需要进行哪些更改才能在 TypeScript 中编写我的服务器代码?我是否需要在其他地方创建一个单独的 tsconfig.json 文件来处理服务器代码,或者 Angular 和服务器代码的指令可以包含在同一个 tsconfig.json 文件中吗?我可以继续使用上述 2 个命令进行开发吗?我需要添加新命令吗?理想情况下,如果需要,我更喜欢不使用 Gulp 等工具但坚持使用 NPM 脚本的解决方案。

node.js express typescript angular-cli angular

5
推荐指数
1
解决办法
2060
查看次数

单元测试Express/Mongoose应用程序路由,无需访问数据库

我已经在Stack Overflow上阅读了以下帖子:

使用Mongoose进行单元测试

模拟/存根Mongoose模型保存方法

我也研究过mockgoose,但我更喜欢使用testdouble或sinon来存根/模拟我的数据库调用.

这里找到的信息可能与我想做的最接近.但我无法完全理解它.我认为,不同之处在于我试图在我的api中测试路线,而不是直接测试Mongoose模型.这是我的代码:

server.ts

import * as express from 'express';
const app = express()
import { createServer } from 'http';
const server = createServer(app);
import * as ioModule from 'socket.io';
const io = ioModule(server);


import * as path from 'path';
import * as bodyParser from 'body-parser';
import * as helmet from 'helmet';
import * as compression from 'compression';
import * as morgan from 'morgan';

// Database connection
import './server/db';

// Get our API routes and socket …
Run Code Online (Sandbox Code Playgroud)

unit-testing mocking mongoose node.js express

5
推荐指数
1
解决办法
3276
查看次数