相关疑难解决方法(0)

如何检查type是否为Boolean

如何检查变量的类型是否为Boolean类型?

我的意思是,有一些替代方案,如:

if(jQuery.type(new Boolean()) === jQuery.type(variable))
      //Do something..
Run Code Online (Sandbox Code Playgroud)

但这对我来说似乎不太好看.

有没有更清洁的方法来实现这一目标?

javascript jquery types

222
推荐指数
8
解决办法
19万
查看次数

如何检查var是否是JavaScript中的字符串?

如何检查var是否是JavaScript中的字符串?

我试过这个但它不起作用......

var a_string = "Hello, I'm a string.";

if (a_string typeof 'string') {
    // this is a string
}
Run Code Online (Sandbox Code Playgroud)

javascript string variable-types

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

JavaScript中的字符串原语和String对象有什么区别?

取自MDN

字符串文字(用双引号或单引号表示)和从非构造函数上下文中的String调用返回的字符串(即,不使用new关键字)是原始字符串.JavaScript会自动将基元转换为String对象,因此可以对原始字符串使用String对象方法.在要在原始字符串上调用方法或发生属性查找的上下文中,JavaScript将自动包装字符串原语并调用方法或执行属性查找.

因此,我认为(逻辑上)字符串基元上的操作(方法调用)应该比字符串对象上的操作慢,因为任何字符串基元method在应用于字符串之前都会转换为字符串对象(额外工作).

但在这个测试案例中,结果却相反.所述码块1的运行速度比较快的块-2代码,两个代码块在下面给出:

代码块-1:

var s = '0123456789';
for (var i = 0; i < s.length; i++) {
  s.charAt(i);
}
Run Code Online (Sandbox Code Playgroud)

代码块-2:

var s = new String('0123456789');
for (var i = 0; i < s.length; i++) {
    s.charAt(i);
}
Run Code Online (Sandbox Code Playgroud)

结果在浏览器中有所不同,但代码块-1总是更快.任何人都可以解释一下,为什么代码块-1代码块-2快.

javascript string object

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

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

在AJAX上发送嵌套的FormData

我需要使用ajax和FormData发送一些数据,因为我想发送一个文件和一些其他参数.我通常发送数据的方式是这样的:

$.ajax({
    type:       'POST',
    url:        'some_url',
    dataType:   'json',
    processData:false,
    contentType:false,
    data:{
        Lvl_1-1: 'something',
        Lvl_1-2: 'something',
        Lvl_1-3: {
            Lvl_1-3-1: "something",
            Lvl_1-3-2: "something",
            Lvl_1-3-3: "something",
        },
    },
    ...
});
Run Code Online (Sandbox Code Playgroud)

如果我不使用FormData(),我没有问题,但是当使用FormData()时,只有Lvl1上的数据是可以的,但是嵌套的任何东西都显示为像这样的字符串

<b>array</b> <i>(size=3)</i>
    'Lvl1-1' <font color='#888a85'>=&gt;</font> <small>string</small> 
        <font color='#cc0000'>'Something'</font> 
        <i>(length=23)</i>
    'Lvl1-2' <font color='#888a85'>=&gt;</font> <small>string</small> 
        <font color='#cc0000'>''Something''</font> <i>(length=3)</i>
    'Lvl1-3' <font color='#888a85'>=&gt;</font> <small>string</small> 
        <font color='#cc0000'>'[object Object]'</font> <i>(length=17)</i>
Run Code Online (Sandbox Code Playgroud)

如果我使用FormData()来编码Lvl1-3中的数据,而不是[object Object]我得到[object FormData]

如何在Lvl1-3上获取数组而不是字符串?

注意:如果文件位于顶层(Lvl_1),我可以使用FormData()发送文件没有问题.我没有编写附加文件的代码,因为这不是问题,嵌套数据是.我刚刚提到了该文件,因为这就是我使用FormData()的原因.

string ajax nested form-data

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

Javascript 中 String() 和 new String() 的区别

在 JavaScript 中使用String()和有什么区别new String()

console.log(String('word')); // word

console.log(new String('word')); // word
Run Code Online (Sandbox Code Playgroud)

javascript string

11
推荐指数
3
解决办法
3428
查看次数

检查数组中的所有元素是否都是字符串

有没有一种好方法可以检查数组中的所有索引是否都是字符串?

check(["asd", 123]); // false
check(["asd", "dsa", "qwe"]); // true
Run Code Online (Sandbox Code Playgroud)

javascript arrays

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

是否有任何标准JavaScript API或库将字符串作为String对象返回?

直到最近,我还没有意识到JavaScript中有两种类型的字符串(和bool和数字):诸如的原语"blah"和诸如的对象new String("blah").

它们以非常"陷阱"的方式不同,其中最大的方式似乎是不同的typeof值("string"vs "object"),但存在许多其他差异,其中一些记录在MDN.

创建String对象没有意义,因为原始字符串也可以正常工作,JSHint甚至将此视为错误.所以我真的想假装String实例甚至不存在,并且只支持我的代码中的原始字符串.

这让我想知道:我可以通过调用一些返回字符串的标准API来获得一个惊喜的String实例吗?或者是否真的可以安全地假设,除非有人通过明确写作搞砸了,否则new String我永远不会看到其中的一个?

javascript string

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

如何将mongodb ISODate转换为mongoDB中的字符串?

我将我的ISODate作为ISODate在mongo中使用,我想以字符串格式使用特定的日期时间格式.

这是ISODate:

ISODate("2020-04-24T11:41:47.280Z")
Run Code Online (Sandbox Code Playgroud)

预期结果:

"2020-04-24T11:41:47.280Z"
Run Code Online (Sandbox Code Playgroud)

我希望在mongodb上发生这种情况,因为我的许多服务都期望采用这种格式,而且我不想在所有服务中进行更改,因为它是一项繁琐的工作.

mongodb mongodb-query

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

检查变量是否为字符串的简便方法?

这个问题是[]的一个衍生产品,是Array的一个实例,但""不是String的实例

鉴于

"" instanceof String; /* false */
String() instanceof String; /* false */
new String() instanceof String; /* true */
Run Code Online (Sandbox Code Playgroud)

typeof "" === "string"; /* true */
typeof String() === "string"; /* true */
typeof new String() === "string"; /* false */
Run Code Online (Sandbox Code Playgroud)

然后,如果我有一个变量abc,我想知道它是否是一个字符串,我可以做

if(typeof abc === "string" || abc instanceof String){
    // do something
}
Run Code Online (Sandbox Code Playgroud)

有没有更简单,更短和本地的方式,或者我必须创建自己的功能?

function isStr(s){
    return typeof s === "string" || s instanceof String;
}
if(isStr(abc)){
    // do something
}
Run Code Online (Sandbox Code Playgroud)

javascript string

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

检查对象是否是Javascript中的字符串

我正在按照教程建议检查对象是否为字符串而不是空,如下所示:

var s = "text here";
if ( s && s.charAt && s.charAt(0))
Run Code Online (Sandbox Code Playgroud)

据说如果s是字符串,那么它有一个方法charAt然后最后一个组件将检查字符串是否为空.

我尝试用其他可用的方法测试它,比如(typeofinstanceof)使用一些SO问题,这里这里也是!!

所以我决定在Js Bin中测试它:jsbin代码如下:

var string1 = "text here";
var string2 = "";


alert("string1  is " + typeof string1);
alert("string2  is " + typeof string2);


//part1- this will succeed and show it is string
if(string1 && string1.charAt){
  alert( "part1- string1 is string");
}else{
  alert("part1- string1 is not string ");
}


//part2- this will show that it …
Run Code Online (Sandbox Code Playgroud)

javascript string instanceof

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

Ramda有没有isString?

背景

我正在尝试使用ramda,我需要一个纯函数,让我知道给定的输入是否是一个字符串,就像lodash一样_.isString.

在搜索到处后,我在Ramda找不到任何东西.所以我想知道,有没有一种方法,使用任何Ramda的现有功能,我可以创建一个isString函数?

我发现这可怕的限制,我不可能最后使用lodash:S

javascript ramda.js

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

让 RegExp.test() 为空值返回 false 的更简单方法?

let regex = /[a-z]+/;
regex.test('a'); // true
regex.test(''); // false
regex.test(null); // true
regex.test(undefined); // true
Run Code Online (Sandbox Code Playgroud)

因此,基于此链接,它是 Ecmascript 中的错误 - /\S/.test(null) 返回 true?,看起来空值被强制为字符串“空”。跆拳道?为什么要这样设计?我也找不到有关此行为的任何文档。有没有办法返回false空/未定义的值(在检查“空”等时没有硬编码)?

javascript

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