【发布时间】:2019-02-05 00:52:59
【问题描述】:
我有以下对象:
[ 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' 之前,甚至可能不存在。
【问题讨论】:
-
@Bodrov 在那个问题中,他所要做的就是降低一个级别,但在我的情况下,该级别可能不存在 obj[2].hasOwnProperty('b') 并抛出 TypeError: Cannot read property 'b' 未定义。
-
有哪些不同的条件需要检查?输入可以是一个空数组吗?
{ b: [...] }是否存在但在数组中的不同位置?是否存在具有多个数组属性的对象?如果有多个{ b: [...] }条目怎么办? -
@user633183 这是来自 websocket 的消息,我必须根据它做不同的事情:kraken.com/features/websocket-api#message-book
-
data.find(x => Object(x) === x && x.hasOwnProperty('b') && Array.isArray(x.b)) !== undefined // => true- 这就是说,我敢肯定你的做法是错误的。与其在运行时搜索数据并检查数据类型,不如选择一个定义明确的数据结构,以便您的程序可以了解并依赖。
标签: javascript arrays node.js object