检查对象是否包含数组

时间:2019-02-11 05:38:42

标签: javascript

是否可以检查我的object是否包含array?例如:

let object1 = {
    name:'abc',
    items:[
        {item_name:'123'},
        {item_name:'456'}
    ]
}

想象一下object1来自服务器,我不确定它是否会(或者甚至不会有)数组。有适当的方法来做到这一点吗?

5 个答案:

答案 0 :(得分:3)

您可以使用Array.prototype.someObject.values()进行迭代并确定是否有任何值是数组。

let object1 = {
    name:'abc',
    items:[{item_name:'123'},{item_name:'456'}]
}

let res = Object.values(object1).some((val) => Array.isArray(val));
console.log(res);

答案 1 :(得分:2)

您可以使用Object.keys()

  

Object.keys()方法返回给定对象自己的属性名称的数组,其顺序与我们在普通循环中获得的顺序相同。

Array.prototype.some()

  

some()方法测试数组中的至少一个元素是否通过了由提供的函数实现的测试。

Array.isArray()

  

Array.isArray()方法确定所传递的值是否为数组。

@echo off 
set "cap_files=*.cap"
set "cap_folder="D:\testfolder\"
Cd /d "%cap_folder%"
set "tshark_cmd="c:\Program Files\Wireshark\tshark"
set "tshark_options=-n -T fields -e frame.number -e frame.time -e ip.src -e ip.dst -e ip.proto -e frame.len -E header=y -E separator=, -E quote=d -E occurrence=f "

for /d %cap_folder% %%f in (%cap_files%) do(
    echo Processing File: %%f %tshark_cmd%  -r %%f %tshark_options% >>%%~nf.csv)

答案 2 :(得分:1)

您可以使用 Some Array.isArray

let object1 = {name:'abc',items:[{item_name:'123'},{item_name:'456'}]}

let op = Object.values(object1).some(e=>Array.isArray(e))

console.log(op)

答案 3 :(得分:1)

使用isArray()。它告诉一个对象是否是数组。 Refer

let object1 = {
name:'abc',
items:[
{item_name:'123'},
{item_name:'456'}
]
}
Object.values(object1).forEach((e)=>{
if(Array.isArray(e))
{
console.log('true')
}})

答案 4 :(得分:0)

find上使用isArrayObject.values,然后将length转换为Boolean

let object1 = {
  name:'abc',
  items:[
    {item_name:'123'},
    {item_name:'456'}
  ]
}

console.log(Boolean(Object.values(object1).find(e => Array.isArray(e)).length));