Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查对象是否有数组_Javascript_Arrays_Node.js_Object - Fatal编程技术网

Javascript 如何检查对象是否有数组

Javascript 如何检查对象是否有数组,javascript,arrays,node.js,object,Javascript,Arrays,Node.js,Object,我的目标如下: [ 13, { a: [ [ '2988.30000', '0.19000000', '1549294216.653040' ] ] }, { b: [ [ '2988.30000', '0.00000000', '1549294216.653774' ], [ '2985.30000', '0.20000000', '1549294216.558703' ], [ '2982.0

我的目标如下:

[ 13,
  { a: [ 
         [ '2988.30000', '0.19000000', '1549294216.653040' ] 
    ] 
  },
  { b: [ 
         [ '2988.30000', '0.00000000', '1549294216.653774' ],
         [ '2985.30000', '0.20000000', '1549294216.558703' ],
         [ '2982.00000', '0.08000000', '1549294195.246025' ],
         [ '2956.00000', '0.07686000', '1549287593.202601' ],
         [ '2802.00000', '0.93779146', '1549187562.171529' ],
         [ '1702.50000', '0.05873000', '1548923730.844040' ] 
    ] 
  } 
]
如何检查数组为“b”的元素是否存在

编辑 “b”数组可能位于不同的位置,“a”之前、“13”之前,甚至可能不存在。

const arr=[13,
{
a:[
['2988.30000', '0.19000000', '1549294216.653040']
]
},
{
b:[
['2988.30000', '0.00000000', '1549294216.653774'],
['2985.30000', '0.20000000', '1549294216.558703'],
['2982.00000', '0.08000000', '1549294195.246025'],
['2956.00000', '0.07686000', '1549287593.202601'],
['2802.00000', '0.93779146', '1549187562.171529'],
['1702.50000', '0.05873000', '1548923730.844040']
]
}
];
arr.forEach(el=>{
如果(el.hasOwnProperty('b')){
log(Array.isArray(Object.values(el));
}
});
//解决方案2:
设res2=arr.findIndex(e=>e&&e['b']&&Array.isArray(e['b'])>-1;
console.log(res2)您可以与要检查的条件一起使用。如果某个元素完成了条件,则返回该元素,否则返回
undefined

const arr=[
13,
{a:[
['2988.30000', '0.19000000', '1549294216.653040']
]},
{b:[
['2988.30000', '0.00000000', '1549294216.653774'],
['2985.30000', '0.20000000', '1549294216.558703'],
['2982.00000', '0.08000000', '1549294195.246025'],
['2956.00000', '0.07686000', '1549287593.202601'],
['2802.00000', '0.93779146', '1549187562.171529'],
['1702.50000', '0.05873000', '1548923730.844040']
]}
];
让res=arr.find(
x=>x.hasOwnProperty(“b”)和&Array.isArray(x.b)
);

控制台日志(res)所以它来自Kraken API,数据确实有一个保证的形状,其中
as
bs
是已知的键-

[Integer//通道
,{as:[[Float,Float,Float]]/[price,volume,timestamp]
,{bs:[[Float,Float,Float]]/[price,volume,timestamp]
]
循环遍历对象并动态搜索属性的建议(包括上面注释中的我自己的建议)是的结果。在这种情况下,我将使用destructuring assignment-

const留言簿=
[ 0
,{作为:
[ [ 5541.30000, 2.50700000, 1534614248.123678 ]
, [ 5541.80000, 0.33000000, 1534614098.345543 ]
, [ 5542.70000, 0.64700000, 1534614244.654432 ]
]
}
,{bs:
[ [ 5541.20000, 1.52900000, 1534614248.765567 ]
, [ 5539.90000, 0.30000000, 1534614241.769870 ]
, [ 5539.50000, 5.00000000, 1534613831.243486 ]
]
}
]
// !          !       !  
const doSomething=([channel,{as},{bs}])=>
console.log(通道、as、bs)
// 0 [...] [...]
doSomething(留言簿)
let list=[13,
{a:['2988.30000','0.19000000','1549294216.653040']],
{b:
[ [ '2988.30000', '0.00000000', '1549294216.653774' ],
[ '2985.30000', '0.20000000', '1549294216.558703' ],
[ '2982.00000', '0.08000000', '1549294195.246025' ],
[ '2956.00000', '0.07686000', '1549287593.202601' ],
[ '2802.00000', '0.93779146', '1549187562.171529' ],
[ '1702.50000', '0.05873000', '1548923730.844040' ] ] } ];
if(ArrayContainesObject('b',列表)){
log('list key b是一个数组');
}
函数ArrayContainesObject(对象,列表){
对于(变量i=0;i}
@Bodrov在这个问题上,他所要做的就是下拉一个级别,但在我的例子中,该级别可能不存在obj[2]。hasOwnProperty('b')和throw TypeError:无法读取未定义的属性'b'。需要检查的不同条件是什么?输入是否为空数组?是否
{b:[…]}
存在,但在数组中处于不同的位置?是否存在具有多个数组属性的对象?如果有多个具有
{b:[…]}
?@user633183这是来自websocket的消息,我必须根据它执行不同的操作:
数据。查找(x=>object(x)==x&&x.hasOwnProperty('b'))&&Array.isArray(x.b))!==undefined/=>true
-也就是说,我肯定你的做法是错误的。与其在运行时搜索数据和检查数据类型,不如选择一个定义良好的数据结构,这样你的程序就可以知道并依赖它。我得到这个错误:
arr.forEach不是一个具有相同examp的函数
你不会有任何错误的谢谢。虽然
bs
是已知的密钥,但是
a
b
可能不存在,或者两者都可能同时存在。我不喜欢依赖第三方的担保,所以我需要确保它们存在,而不是假设这是在处理大量资金。我赚了很多钱向您展示如何使用默认参数处理格式错误的有效负载的更新我相信这个解决方案对他来说会更好,我支持+1。