检查包含数组的数组

时间:2015-08-18 03:16:31

标签: javascript jquery arrays

我搜索了这个问题,但答案是多余的,所以我想问一下,如果没有任何匹配,如何检查包含另一个数组的任何数组。

我希望这个['abc']是假的,因为它里面没有另一个数组,这是真的['abc',[1]]。许多示例都使用复杂的循环来查找数组值,但是知道数组中是否存在数组的最简单方法是什么?

3 个答案:

答案 0 :(得分:2)

尝试使用{ "query": { "filtered": { "filter": { "term": { "cityId": "10777" } }, "query": { "query_string": { "query": "pizza", "fields": [ "name", "main", "category.name" ] } } } }, "sort": [ { "premium": { "order": "desc" } } ], "aggs": { "categories": { "terms": { "field": "category.name" } } } } Array.prototype.some

Array.isArray

  

var arr1 = ["abc"]; var arr2 = ["abc", [1]]; var res1 = arr1.some(function(item) { return Array.isArray(item); }); var res2 = arr2.some(function(item) { return Array.isArray(item); }); document.body.innerHTML = "arr1 contains `Array`:" + res1 + "<br> arr2 contains `Array`:" + res2;为什么会这样   不起作用?

注意,jQuery似乎不需要返回预期的结果。

尝试在回调中的元素上为$.each(arrayTag,function(){ console.log(this.isArray); });回调$.each()调用function(key, item)添加参数

Array.isArray(item)
var arr1 = ["abc"];

var arr2 = ["abc", [1]];

$.each(arr1, function(key, item) {
  console.log(Array.isArray(item))
});

$.each(arr2, function(key, item) {
  console.log(Array.isArray(item))
});

答案 1 :(得分:2)

您可以使用jQuery filter()方法仅返回数组的数组元素;并检查元素是否为数组,您可以使用jQuery type()方法。如果数字返回值大于0,则数组包含一个数组 - true;否则,false

function hasArray( array ) {
    return $.grep( array, function(v,i) {
        return $.type( v ) == 'array';
    }).length > 0;
}

console.log( hasArray( [ 'abc', [ 1 ] ] ) ); //true
console.log( hasArray( [ 'abc' ] ) );       //false
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

答案 2 :(得分:0)

如果您想要实际抓取内部数组:

ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/path/to/directory");
options.setExperimentalOption("prefs", prefs);
ChromeDriver chromeDriver = new ChromeDriver(options);

但如果你只想要一个布尔

var array = ['a', [1,2,3]]

array.filter(function(element){
    return Array.isArray(element)
})