相关疑难解决方法(0)

如何检查对象是否是数组?

我正在尝试编写一个接受字符串列表或单个字符串的函数.如果它是一个字符串,那么我想将它转换为只有一个项目的数组.然后我可以循环它而不用担心错误.

那么我该如何检查变量是否是一个数组?


我已经完成了下面的各种解决方案,并创建了一个jsperf测试.

javascript arrays javascript-objects

2581
推荐指数
27
解决办法
144万
查看次数

如何使用另一个数组扩展现有JavaScript数组,而无需创建新数组

似乎没有办法用另一个数组扩展现有的JavaScript数组,即模拟Python的extend方法.

我想实现以下目标:

>>> a = [1, 2]
[1, 2]
>>> b = [3, 4, 5]
[3, 4, 5]
>>> SOMETHING HERE
>>> a
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

我知道有一种a.concat(b)方法,但它创建了一个新的数组,而不是简单地扩展第一个.我想要一种算法,当a它明显大于b(即不复制的算法)时,它可以有效地工作a.

注意:不是如何将某些内容附加到数组的副本 - 这里的目标是将一个数组的全部内容添加到另一个数组中,并"就地"执行,即不复制扩展数组的所有元素.

javascript arrays concatenation

899
推荐指数
11
解决办法
51万
查看次数

如何检测变量是否为数组

什么是确定JavaScript中的变量是否为数组的最佳事实标准跨浏览器方法?

在网上搜索有很多不同的建议,有些是好的,有些是无效的.

例如,以下是一种基本方法:

function isArray(obj) {
    return (obj && obj.length);
}
Run Code Online (Sandbox Code Playgroud)

但是,请注意如果数组为空,或者obj实际上不是数组但实现了长度属性等会发生什么.

那么哪种实现在实际工作方面是最好的,跨浏览器并且仍然有效地执行?

javascript arrays

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

在TypeScript中测试字符串类型的数组

如何在TypeScript中测试变量是否为字符串数组?像这样的东西:

function f(): string {
    var a: string[] = ["A", "B", "C"];

    if (typeof a === "string[]")    {
        return "Yes"
    }
    else {
        // returns no as it's 'object'
        return "No"
    }
};
Run Code Online (Sandbox Code Playgroud)

TypeScript.io在这里:http://typescript.io/k0ZiJzso0Qg/2

编辑:我已经更新了文本,要求测试string [].这只是在之前的代码示例中.

typescript

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

如何检查对象是否不是数组?

所以我有一个函数,需要检查一个参数是否是一个对象,但这失败,因为:

typeof [] // returns 'object'
Run Code Online (Sandbox Code Playgroud)

这是一个经典的javascript问题,但我不记得该怎么做才能真正接受对象,而不是数组.

javascript types typeof

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

识别数组对象

如何知道对象是否是数组?

 var x=[];

console.log(typeof x);//output:"object"
alert(x);//output:[object Object]
console.log(x.valueOf())//output:<blank>? what is the reason here?
console.log([].toString()); also outputs <blank>     
Object.prototype.toString.call(x) output:[object Array] how?
Run Code Online (Sandbox Code Playgroud)

自console.log([].toString()); 输出:空白

第一名:

为什么我在最后的第二个陈述中空白?

第二:

有没有办法确切知道对象是什么:数组或普通对象({})没有x.join()等各自方法的帮助,表明x是一个数组,而不是这种方式.

实际上,在jquery选择中,如$("p")返回jquery对象,所以如果我使用

console.log(typeof $("p"));//output:"object
Run Code Online (Sandbox Code Playgroud)

我只是想知道对象的实际名称.请它.谢谢你的帮助

javascript jquery

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

如何在小胡子模板中处理字符串或字符串数​​组

我有一个简单/初学者的问题,在我的应用程序中使用小胡子模板(或更准确地说是Hogan).我使用的API有时会返回一个String,有时会返回一个字符串数组.

我知道可以将String包装在单个元素数组中,但是还有一种方法可以从胡子模板中处理这个选项吗?

使用普通部分
{{#stringOrArray}} <li>{{.}}</li> {{/stringOrArray}} 如果只是一个字符串,则不会打印该值.

mustache hogan.js

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

在 Typescript 中扩展数组会破坏构造函数

在玩打字稿时,我遇到了以下有趣的行为:

class ExtArray<U> extends Array<U> {

    constructor(...args : U[]) {
        super(...args);
    }

    public contains(element : U) : boolean {
        var i = this.indexOf(element);
        return i !== -1;
    }
}


var test : ExtArray<string> = new ExtArray("a", "b", "c");

test.push("y");

console.log(test.length); // 1

console.log(test[0]);  // y
console.log(test[1]);  // undefined
console.log("Has a: " + test.contains("a"));  // Has a: false
console.log("Has y: " + test.contains("y"));  // Has y : true
Run Code Online (Sandbox Code Playgroud)

我已将 console.log 语句的输出添加为注释。看此打字稿游乐场以获取可执行示例和 JavaScript 代码。

正如您所看到的,传递给构造函数的元素似乎没有添加到数组中。

Typescript 中的新增功能中有关扩展表达式的部分 …

arrays constructor typescript

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

instanceof Array 比 JavaScript 中的 isArray 更好吗?

从那两个帖子:

有几种方法可以检查一个对象是否是数组

  1. variable instanceof Array

  2. Array.isArray(variable)

有人告诉我,第二种方法比第一种方法好。有没有人能说出它的原因?

javascript arrays instanceof

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

jQuery - 如何检查元素是数组还是单个数组

jQuery 1.7.1

有时我有一个元素作为数组,

<tr><td><input type="hidden" class="p" name="it" value="1"/></td></tr>
<tr><td><input type="hidden" class="p" name="it" value="2"/></td></tr>
Run Code Online (Sandbox Code Playgroud)

下面的jQuery代码有效,

$(".p").each(function(i){
alert($('.p')[i].value);
});
Run Code Online (Sandbox Code Playgroud)

有时我将该元素作为单个元素

<tr><td><input type="hidden" class="p" name="it" value="1"/></td></tr>
Run Code Online (Sandbox Code Playgroud)

我想在尝试执行上面的jQuery代码之前确保隐藏的输入是数组还是单个元素.我怎么能用jQuery做到这一点?

jquery

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

检查对象数组是否为空,并忽略所有其他内容

我有多个div返回这样的数组:

[{"k":"Model","v":"box"},{"k":"Color","v":"blue"},{"k":"Size","v":"med"},{"k":"Type","v":"good"}]
Run Code Online (Sandbox Code Playgroud)

有时,非数组项又回来了,我想忽略那些。
可以是空格或随机无序的空白列表。因此,我只想只处理返回的数组,其余的留空。
我如何检查它是否为数组,而忽略其余部分?

jQuery('.overview').each(function () {
   var $overview = jQuery(this),
       specs = jQuery.parseJSON($overview.html());
   if ( !! specs) {
       $overview.html('<div class="bullet_spec"></div>');
       jQuery.each(specs, function () {
           $overview.children('div').append('<ul class="specs"><li class="label">' + this.k + ' : ' + this.v + '</li></ul>');
       });
   } else { // leave blank?? not sure what to do here
   }
});
Run Code Online (Sandbox Code Playgroud)

这是我的小提琴:http : //jsfiddle.net/veGPN/
谢谢

javascript arrays each jquery

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

测试变量是否为数组的最佳方法

可能重复:
如何检测变量是否为数组

当我需要测试变量是否是一个数组时(例如函数中的输入参数可能是对象或数组)我通常使用这段代码

typeof(myVar) === 'object' && myVar.length !== undefined;
Run Code Online (Sandbox Code Playgroud)

这是正确的方法,还是有更有效的方法,考虑到即使 myVar instanceof Array 速度更快,也应该避免因iframe问题而避免?

javascript

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