相关疑难解决方法(0)

如何处理JavaScript中的浮点数精度?

我有以下虚拟测试脚本:

function test() {
  var x = 0.1 * 0.2;
  document.write(x);
}
test();
Run Code Online (Sandbox Code Playgroud)

这将打印结果0.020000000000000004,只应打印0.02(如果您使用计算器).据我所知,这是由于浮点乘法精度的误差.

有没有人有一个很好的解决方案,以便在这种情况下,我得到正确的结果0.02?我知道有类似的功能toFixed或舍入将是另一种可能性,但我想真正打印整个数字没有任何切割和舍入.只是想知道你们其中一个人是否有一些漂亮,优雅的解决方案.

当然,否则我会转到大约10位左右.

javascript floating-point

552
推荐指数
22
解决办法
34万
查看次数

如何在JavaScript中交换两个变量

我有这两个变量:

var a = 1,
    b = 2;
Run Code Online (Sandbox Code Playgroud)

我的问题是如何交换它们?只有这个变量,不是任何对象.

javascript variables swap

156
推荐指数
12
解决办法
13万
查看次数

为什么我们需要使用基数?

radix究竟意味着什么?我们为什么需要它?

parseInt(10, radixValue); 
Run Code Online (Sandbox Code Playgroud)

javascript

75
推荐指数
4
解决办法
4万
查看次数

当我们谈论排序时,自然顺序是什么?

什么是自然排序.假设我有一个Employee对象,其中包含姓名,年龄和加入日期,按自然顺序排序?

language-agnostic sorting

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

jQuery插件检查版本

在编写新的jQuery插件时,有一种直接的方法来检查当前版本的jQuery是否高于某个数字?否则显示警告或记录错误.

做一些像这样的事情会很好:

jQuery.version >= 1.2.6
Run Code Online (Sandbox Code Playgroud)

以某种形式.

javascript jquery

20
推荐指数
2
解决办法
9570
查看次数

如何比较任意版本号?

有没有人有代码来比较JavaScript中的两个版本号?我只想要简单的版本比较(例如"1.0"vs "1.5.6"),它应该与数字或字符串一起使用.它可以忽略尾随的beta标识符"1.5.6b4",但可以预期字符串格式正确.该函数应该返回一个有符号整数,就像普通的cmp函数一样.

function cmpVersion(a, b)
  return less than one if a < b
  return 0 if a == b
  return greater than one if a > b
Run Code Online (Sandbox Code Playgroud)

我有一个答案,但会选择一个比我自己更好或更优雅的解决方案.

(我用它来比较jQuery.browser.version数字,但答案会更广泛适用)

javascript comparison

9
推荐指数
2
解决办法
6368
查看次数

用多个点对两个"数字"排序

我有一个无序列表,看起来像这样:

1.1.1
1.1.1.1
1.1.2
1.10.1
1.10.2
1.2.1
1.2.2
1.2.3
1.2.4
1.20.1
1.3.1
Run Code Online (Sandbox Code Playgroud)

我想在Javascript中将其排序为"数字"顺序.

1.1.1
1.1.1.1
1.1.2
1.2.1
1.2.2
1.2.3
1.2.4
1.3.1
1.10.1
1.10.2
1.20.1
Run Code Online (Sandbox Code Playgroud)

我需要哪种功能?

javascript sorting numerical

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

如何根据字符串中的数字对字符串进行排序,以(.)分隔

嗨,我想根据其中的数字对字符串进行排序,例如

  • 1.1.act2
  • 13.1.2.1.act3
  • 2.1.4.act56
  • 1.3.actorg
  • 3.1.3.args
  • 13.1.3.4.acr

我想以某种方式这样做

  • 1.1.act2
  • 1.3.actorg
  • 2.1.4.act56
  • 3.1.3.args
  • 13.1.2.1.act3
  • 13.1.3.4.acry

我如何在JavaScript中实现它?

javascript sorting

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

javascript - 基于分离的结尾过滤字符串数组

我有一个像这样的字符串数组:

const strings = [
  "author:app:1.0.0",
  "author:app:1.0.1",
  "author:app2:1.0.0",
  "author:app2:1.0.2",
  "author:app3:1.0.1"
];
Run Code Online (Sandbox Code Playgroud)

我想过滤它们,以便只剩下给定“作者:姓名”的最新版本,从而删除不是最新的(即“1.0.1”)。

我的预期结果是这样的:

const filteredStrings = [
  "author:app:1.0.1",
  "author:app2:1.0.2",
  "author:app3:1.0.1"
];
Run Code Online (Sandbox Code Playgroud)

有什么办法可以简单地做到这一点?

javascript arrays sorting string

5
推荐指数
0
解决办法
105
查看次数

Javascript函数比较两个版本

我正在编写一个函数来比较2个版本,如果第二个版本比第一个版本大,则返回true.

但我的算法有一个"洞",我无法弄清楚如何修复.

function compareversion(version1,version2){

    var result=false;

    if(typeof version1!=='object'){ version1=version1.toString().split('.'); }
    if(typeof version2!=='object'){ version2=version2.toString().split('.'); }

    for(var i=0;i<(Math.max(version1.length,version2.length));i++){

        if(version1[i]==undefined){ version1[i]=0; }
        if(version2[i]==undefined){ version2[i]=0; }

        if(version1[i]<version2[i]){
            result=true;
            break;
        }
    }
    return(result);
}
Run Code Online (Sandbox Code Playgroud)

这个例子按预期返回

compareversion('1','1') //false
compareversion('1','1.0.0') //false
compareversion('2.0','1.0.0') //false
compareversion('1.1','1.2') //true
compareversion('1','1.0.0.1') //true
Run Code Online (Sandbox Code Playgroud)

但是这个

compareversion('1.1.0','1.0.1') //return true but should be false
Run Code Online (Sandbox Code Playgroud)

javascript algorithm version-control

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

可以在更新时向 VSCode 扩展/颜色主题的用户显示通知吗?

是否可以在 Visual Studio Code 中向用户显示您的扩展或颜色主题通知?对于安装了我的颜色主题或扩展并正在获取更新的人,我希望可能在他们更新扩展后向此人显示通知(可能是在 VSCode 启动时,或者在他们进入市场更新后)重新加载扩展和客户端本身。)

例如:我认为,如果他们在更新扩展程序后看到一条通知,上面写着“反馈?建议?修复?......关于主题?”,这对我来说是有益的,而不是侵入性的。或者通知他们主题发生了可能不利的变化。因此,如果他们愿意,他们可以“选择退出”该更改(例如某物周围的一组额外边框或某物的颜色变化。)

显然,关闭所有通知的人不会受到影响,但我认为在罕见的更新后偶尔收到通知也不会太糟糕。我无法找到有关这是否可能的信息,如果可能的话,如何做到这一点。任何有关这方面的信息都将受到赞赏。如果可能的话,那些阅读本文的人,无论您是否已经这样做,您是否会建议以这种方式向您的主题用户显示通知?

谢谢 :)

notifications visual-studio-code vscode-extensions

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

JavaScript从点状版本数组中找到最高版本

我有一系列的版本号,如下所示:

[
  {
    "name": "v12.3.0.pre",
  },
  {
    "name": "v12.2.5",
  },
  {
    "name": "v12.2.4",
  },
  {
    "name": "v12.2.3",
  },
  {
    "name": "v12.2.1",
  },
  {
    "name": "v12.2.0",
  },
  {
    "name": "v12.2.0.pre",
  },
  {
    "name": "v12.2.0-rc32",
  },
  {
    "name": "v12.2.0-rc31",
  },
  {
    "name": "v12.1.9",
  },
  {
    "name": "v12.1.8",
  },
  {
    "name": "v12.1.6",
  },
  {
    "name": "v12.1.4",
  },
  {
    "name": "v12.1.3",
  },
  {
    "name": "v12.1.2",
  },
  {
    "name": "v12.1.1",
  },
  {
    "name": "v12.1.0",
  },
  {
    "name": "v12.1.0.pre",
  },
  {
    "name": "v12.1.0-rc23",
  },
  {
    "name": …
Run Code Online (Sandbox Code Playgroud)

javascript arrays

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

如何知道用户最近是否更新了Chrome扩展程序,以便我可以提醒他们

所以我有一个信息按钮,每当用户更新扩展时,右上方会显示一个小红点,表示有一个警报(新的更新).

在此输入图像描述在此输入图像描述

我现在是这样做的,只要在查看更新时在localStorage中设置一行 - 如果找不到该行,则该按钮将具有红点.

问题是,这个解决方案要求我在每次更新后,每次启动更新时都会改变几行,如下所示:

//1.1.2 was the last version
localStorage.removeItem("update-1.1.2");

...

if( localStorage.getItem("update-1.1.3") === null ) {
  //show button image with red dot
}
else {
  //show button image without red dot
}

...

$('#info').click(function() 
{
  localStorage.setItem("update-1.1.3", "YES");
  //swap the button image w/ red dot, with the same image w/o the red dot
});
Run Code Online (Sandbox Code Playgroud)

如您所见,每次更新时我都必须在3个位置更改"update-xxx"字符串.

所以我的两个问题是: - 有更好的方法吗?也许是一种确定用户是否更新了扩展程序的方法? - 图像交换是解决此问题的最佳方式吗?或者我应该有一个红点图像,使它出现和消失.对我来说,性能差异似乎很小 - 它取决于是否交换整个图像,或者使隐藏/不隐藏另一个图像更有效.

javascript google-chrome local-storage google-chrome-extension

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