我有一个像以下JavaScript对象:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
Run Code Online (Sandbox Code Playgroud)
现在我想通过所有回路p
元素(p1
,p2
,p3
...),并得到他们的键和值.我怎样才能做到这一点?
如有必要,我可以修改JavaScript对象.我的最终目标是遍历一些键值对,如果可能的话,我想避免使用eval
.
为什么有人更喜欢lodash.js或underscore.js实用程序库而不是另一个?
Lodash似乎是下划线的替代品,后者已经存在了更长时间.
我认为两者都很精彩,但我对他们如何努力进行有根据的比较并不了解,我想更多地了解这些差异.
哪个是正确的做法?
if (myObj['key'] == undefined)
Run Code Online (Sandbox Code Playgroud)
要么
if (myObj['key'] == null)
Run Code Online (Sandbox Code Playgroud)
要么
if (myObj['key'])
Run Code Online (Sandbox Code Playgroud) 这是否可用于测试位置"索引"的值是否存在,或者是否有更好的方法:
if(arrayName[index]==""){
// do stuff
}
Run Code Online (Sandbox Code Playgroud) 除了提高可读性之外,还有什么优势可以includes
结束indexOf
?他们看起来和我一模一样.
这有什么区别
var x = [1,2,3].indexOf(1) > -1; //true
Run Code Online (Sandbox Code Playgroud)
还有这个?
var y = [1,2,3].includes(1); //true
Run Code Online (Sandbox Code Playgroud) 我在Twitter的JS文件中找到了以下代码段.我想知道他们为什么需要调用hasOwnProperty
函数看到dict
有key
财产?for循环正在为'dict'中的每个'key'运行,这意味着'dict'有'key',我错过了一个点吗?
function forEach(dict, f) {
for (key in dict) {
if (dict.hasOwnProperty(key))
f(key, dict[key]);
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
for (i in awards) {
if (awards[i] instanceof Array === false) {
console.log(awards[i]);
httpFactory.patch(awards[i], {"read": true}, false);
}
}
Run Code Online (Sandbox Code Playgroud)
我的IDE显示与上述代码相关的此错误:
可能对意外(自定义/继承)成员进行迭代,可能缺少hasOwnProperty检查
检查JavaScript中未过滤的for-in循环的任何实例.使用此构造会导致处理继承或意外的属性.您需要使用hasOwnProperty()方法过滤自己的属性.验证适用于JavaScript,html或jsp文件.
你能更详细地解释一下这个陈述的含义吗?
鉴于:
var peoples = [
{ "attr1": "bob", "attr2": "pizza" },
{ "attr1": "john", "attr2": "sushi" },
{ "attr1": "larry", "attr2": "hummus" }
];
Run Code Online (Sandbox Code Playgroud)
通缉:
对象索引attr === value
例如attr1 === "john"
或attr2 === "hummus"
更新: 请仔细阅读我的问题,我不想通过$ .inArray找到对象,也不想获取特定对象属性的值.请考虑这个以获得答案.谢谢!
情况:我有一个包含多个子和子子对象的大对象,其属性包含多种数据类型.出于我们的目的,此对象看起来像这样:
var object = {
aProperty: {
aSetting1: 1,
aSetting2: 2,
aSetting3: 3,
aSetting4: 4,
aSetting5: 5
},
bProperty: {
bSetting1: {
bPropertySubSetting : true
},
bSetting2: "bString"
},
cProperty: {
cSetting: "cString"
}
}
Run Code Online (Sandbox Code Playgroud)
我需要循环遍历此对象并构建显示层次结构的键列表,因此列表最终看起来像这样:
aProperty.aSetting1
aProperty.aSetting2
aProperty.aSetting3
aProperty.aSetting4
aProperty.aSetting5
bProperty.bSetting1.bPropertySubSetting
bProperty.bSetting2
cProperty.cSetting
Run Code Online (Sandbox Code Playgroud)
我有这个函数,它循环遍历对象并吐出密钥,但不是分层次的:
function iterate(obj) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
if (typeof obj[property] == "object") {
iterate(obj[property]);
}
else {
console.log(property + " " + obj[property]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
有人能告诉我怎么做吗?这里有一个jsfiddle让你搞砸:http: …
有人可以告诉我,哪个ECMA版本的IN运算符可用以及哪些浏览器(版本)支持它?
说明:
IN运算符可以像下面这样使用:
var myObject = {
Firstname: 'Foo',
Lastname: 'Bar'
};
if('Lastname' in myObject){
// Lastname is an attribute of myObject
}
Run Code Online (Sandbox Code Playgroud) javascript ×10
object ×2
arrays ×1
each ×1
ecma262 ×1
ecmascript-7 ×1
jquery ×1
lodash ×1
loops ×1