如何检查JavaScript对象或数组中是否存在特定键?
如果某个密钥不存在,并且我尝试访问它,它会返回false吗?或抛出错误?
拿这个片段,
var a = {
}
if(typeof a.c === 'undefined'){
console.log('inside if');
}
if(a.c === undefined){
console.log('inside if');
}
Run Code Online (Sandbox Code Playgroud)
两者都if导致了true.某些浏览器特定的两种语句有什么不同吗?
此外,在我的上一个项目中,我已经typeof a.c == 'undefined'多次使用来检查json数据中的值.
现在,我知道这不是好方法,因为某些价值可能也是undefined如此,所以我的逻辑会失败.
我应该用过hasOwnProperty.
但我相信,没有价值将是undefined,我可以用typeof a.c == 'undefined'代替hasOwnProperty或者我应该改变我所有的typeof用hasOwnProperty
我正在尝试检查我收到的新数据对我正在抓住的对象,我想要找出的是,如果他们发送的对象的键与我当前拥有的对象中的任何键匹配.
所以我抓住了像这样的物体
myObj = [{"one": 1}, {"two": 2 },{"three" : 3}];
Run Code Online (Sandbox Code Playgroud)
我收到一个像这样的对象
{"three" : 5 }
Run Code Online (Sandbox Code Playgroud)
我想只是针对对象数组(myObj)检查这个对象,看看里面是否有"三"键(我不关心值,只是键匹配)所以我可以弹出它成为一个if语句分开喜欢 -
if( array of objects (myObj) has key from single object ( "three" ) ) {}
Run Code Online (Sandbox Code Playgroud)
我使用下划线.谢谢!
编辑:对不起,这不清楚,我正在编辑它澄清 -
我抓住myObj(对象数组),并发送一个对象 - 例如"三",我只想拉出那个单个对象键(Object.keys(updatedObject)[0])并检查如果对象数组中的任何对象具有该键.
所以_has似乎只是为了检查一个对象,而不是一个对象数组.
我需要编写一个带有2个参数的函数,第一个参数是<li>元素列表,第二个参数是对象。对象是产品及其价格的清单。所有<li>元素都将包含包含产品名称的文本。该功能应检查提到的每种产品的价格,计算并返回总价。
例:
<ul>
<li>oreos<li/>
<li>milk<li/>
<ul/>
Run Code Online (Sandbox Code Playgroud)
let products = {
oreos: 20,
milk: 17,
bread: 12,
doritos: 10
}
Run Code Online (Sandbox Code Playgroud)
我尝试过使用for in / of循环来遍历product对象,并将其与<li>using 匹配,.innerText但是不确定如何去做。
请帮忙