小编V S*_*S X的帖子

Javascript 对象与 Map/Set 键查找性能

我试图探索 JavaScript与普通按键访问Object相比如何执行。我在JSBEN.CH上运行了以下 3 段代码。MapSet

对象

const object = {};

for (let i = 0; i < 10000; ++i) {
    object[`key_${i}`] = 1;
}

let result = 0;
  
for (let i = 0; i < 10000; ++i) {
    result += object[`key_${i}`];
}
Run Code Online (Sandbox Code Playgroud)

地图

const map = new Map();

for (let i = 0; i < 10000; ++i) {
    map.set(`key_${i}`, 1);
}

let result = 0;

for (let i = 0; i < 10000; ++i) { …
Run Code Online (Sandbox Code Playgroud)

javascript performance dictionary object set

16
推荐指数
1
解决办法
2万
查看次数

如何在 HTTP 错误 422 的情况下使用 fetch 获取响应正文?

我在后端有一个 API,它201在成功调用的情况下发送状态,如果提交的数据有任何错误,它会发送状态422(不可处理的实体),并带有如下 json 响应:

{
  "error": "Some error text here explaining the error"
}
Run Code Online (Sandbox Code Playgroud)

此外,它会404在 API 由于某种原因无法在后端工作时发送。

在前端,我使用以下代码获取响应并根据响应状态代码执行成功或错误回调:

{
  "error": "Some error text here explaining the error"
}
Run Code Online (Sandbox Code Playgroud)

successCallback函数能够在状态代码的情况下以正确的 JSON 格式接收响应,201但是当我尝试在errorCallback( status: 422) 中获取错误响应时,它显示如下内容(在控制台中记录响应):

Error: [object Response]
    at status (grocery-market.js:447)
Run Code Online (Sandbox Code Playgroud)

当我console.lognew Error()像这样包装之前尝试错误响应时,

  checkStatus = (response) => {
    if (response.status >= 200 && response.status < 300) {
      return Promise.resolve(response)
    } else {
      console.log(response.json()) //logging …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling http fetch reactjs

15
推荐指数
1
解决办法
2875
查看次数

为什么在 webpack 配置中使用 __dirname 和 path.resolve ?

我正在浏览这个 webpack 教程:https ://youtu.be/TOb1c39m64A

__dirname在 1:30:00 左右,他讨论了in的用法path.resolve,但我不太明白使用和不使用它有什么区别。

这两个(path.resolve& __dirname)不是同一个意思吗?两者都给出了该文件运行的当前绝对目录。事实证明,当我删除它时__dirname,它仍然会build在同一根位置创建文件(即使webpack.config.js)文件不存在于根级别。即下面的代码产生相同的结果:

__dirname

  output: {
    assetModuleFilename: "images/[hash][ext][query]",
    path: path.resolve(__dirname, 'dist')
  }, 
Run Code Online (Sandbox Code Playgroud)

没有__dirname

  output: {
    assetModuleFilename: "images/[hash][ext][query]",
    path: path.resolve('dist')
  }, 
Run Code Online (Sandbox Code Playgroud)

__dirname那么这里需要用到什么呢??

path node.js reactjs webpack

9
推荐指数
1
解决办法
4244
查看次数

可观察对象:取消新订阅呼叫上的先前的HTTP请求

我正在为我的项目开发搜索功能。用户在搜索栏上键入任何内容后;搜索文本发生任何更改时,我都会将文本发送到后端进行验证并收到响应(文本错误或无错误):

this.searchBar.on('change', () => {

    http.post('api_link', {searchText: 
       this.serachBar.searchText}).subscribe(resp => {
            this.resp = resp['Result'];
       });
    })
Run Code Online (Sandbox Code Playgroud)

现在,当用户不断在搜索栏中键入内容时,后端会收到多个验证响应。但是,在进行任何新更改时,只有最新的订阅才有效,并且以前对api的任何调用都是无用的。

有什么办法可以使用订阅取消对api的任何新调用上的先前订阅?

注意:似乎可以等待所有响应,但是我还将在搜索栏下方显示响应(直到那时显示一个加载程序)。因此,我希望加载程序一直加载直到最新的响应可用,而不是在各种响应状态之间转换。

httprequest subscribe observable rxjs angular

5
推荐指数
2
解决办法
4617
查看次数

在D3 v5中使用d3.csv动态加载数据

我正在尝试在d3.js中构建动态加载的条形图,该条形图将从后端部分加载数据。使用此d3.csv()功能,是否有任何方法可以n从数据中读取第一个行数以进行初始绘制,然后按照我的JS逻辑加载后续数据?

tl; dr我想有选择地访问d3.csv()函数中的数据。

我正在尝试运行以下代码:

var margin = {
            top: 20,
            bottom: 30,
            left: 40,
            right: 30
        },
        width = 600 - margin.left - margin.right,
        height = 500 - margin.top - margin.bottom;

    var loadData = function() {
        d3.csv("test_data.csv", function(data) {
            console.log(data.filter(function(d, i) {
                return i < 2;
            }));

            console.log(data.filter(function(d, i) {
                return i < 3;
            }))
        })
    }

    loadData();
Run Code Online (Sandbox Code Playgroud)

但是,控制台出现错误:

未捕获(承诺)TypeError:data.filter不是函数(…)

这使我相信此数据不是数组。是这种情况还是我在这里面临其他问题?

另外,如何访问此d3.csv函数内的列(在csv文件中)?(例如,如果我的csv数据文件包含名为a和b的两列)。

javascript database csv d3.js

4
推荐指数
1
解决办法
5593
查看次数

d3 v5中更新路径的平滑过渡

我正在尝试构建d3折线图,该图将在每次单击时更新图表数据。到目前为止,这是我的进度:

var n = 10,
  random = d3.randomNormal(0, .2),
  data = d3.range(n).map(random);

var svg = d3.select("svg"),
  margin = {
    top: 20,
    right: 20,
    bottom: 20,
    left: 40
  },
  width = +svg.attr("width") - margin.left - margin.right,
  height = +svg.attr("height") - margin.top - margin.bottom,
  g = svg.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")");

var x = d3.scaleLinear()
  .domain([0, n - 1])
  .range([0, width]);

var y = d3.scaleLinear()
  .domain([-1, 1])
  .range([height, 0]);

var line = d3.line()
  .x(function(d, i) {
    return …
Run Code Online (Sandbox Code Playgroud)

javascript css jquery d3.js

3
推荐指数
1
解决办法
2015
查看次数

如何在我的 ejs 文件中包含引导程序文件?

所以我已经使用 npm -bootstrap@3 安装了引导程序,但是当我尝试在我的应用程序中包含来自 node_modules 的 bootstrap.min.css 文件时,它在我的控制台中显示此错误:

错误信息

在此处输入图片说明

在网络选项卡中显示

在引导源中找不到 404。

以下是我的项目结构中的一些图像:

项目文件夹结构

在此处输入图片说明

包含引导程序文件的 ejs 代码

在此处输入图片说明

这里有什么问题?

javascript css ejs node.js twitter-bootstrap

2
推荐指数
1
解决办法
2万
查看次数

Javascript:数组中具有不同键类型的意外空元素?

有人可以解释一下这段 JavaScript 代码中发生了什么:

    let arr = [];

    arr["foo"] = "11";
    arr["sd"] = "12";
    arr[1] = "13";

    console.log(arr.length); //2
    console.log(arr) // [empty, "13", foo: "11", sd: "12"]
Run Code Online (Sandbox Code Playgroud)

为什么empty数组中有一个元素?

另外,为什么数组length等于 2 而不是 4?

javascript arrays object

2
推荐指数
1
解决办法
28
查看次数

json.NewEncoder 和 json.NewDecoder 中的序列化/编码

我正在尝试通过使用 Go 中的 gorilla mux 库构建不同的基本 REST API 来学习后端开发(遵循本教程

这是我迄今为止构建的代码:

package main

import (
"encoding/json"
"net/http"

"github.com/gorilla/mux"
)

// Post represents single post by user
type Post struct {
Title  string `json:"title"`
Body   string `json:"body"`
Author User   `json:"author"`
}

// User is struct that represnets a user
type User struct {
FullName string `json:"fullName"`
Username string `json:"username"`
Email    string `json:"email"`
}

var posts []Post = []Post{}

func main() {
   router := mux.NewRouter()
   router.HandleFunc("/posts", addItem).Methods("POST")
   http.ListenAndServe(":5000", router)
}

func …
Run Code Online (Sandbox Code Playgroud)

rest json encode backend go

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

为什么 useQuery 调用会导致我的组件重新渲染?

正如我们所知,当 props 或 state 发生变化时,react 组件会重新渲染。

我现在正在使用useQueryreact-apollo包象下面这样:

import { gql, useQuery } from '@apollo/client';

const getBookQuery = gql`
  {
    books {
      name
    }
  }
`;

function BookList() {
    const { loading, error, data} = useQuery(getBookQuery);

    if(loading) return <p>Loading....</p>
    if(error) return <p>Ops! Something went wrong</p>

    return (
      <>
        <ul>
          {data.books.map(book => (
            <li key={book.name}>{book.name}</li>
          ))}
        </ul>
      </>
    )
}

export default BookList;
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我们首先进入Loading...DOM,然后将其更新为包含查询数据的列表(一旦它到达)。但是一旦从查询中收到数据,react 如何知道重新渲染我的组件。

这些data,loadingerror属性是否映射到组件 props 并且它们正在更新?如果是这样,为什么 chrome 开发工具不显示此 …

javascript apollo reactjs react-apollo react-hooks

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