Dis*_*oat 72 javascript arrays key
我有一个使用此代码创建的数组:
var widthRange = new Array();
widthRange[46] = { min:0, max:52 };
widthRange[66] = { min:52, max:70 };
widthRange[90] = { min:70, max:94 };
Run Code Online (Sandbox Code Playgroud)
我想在一个循环中得到每个值46,66,90.我试过for (var key in widthRange)但这给了我一大堆额外的属性(我假设它们是对象上的函数).我不能使用常规for循环,因为值不是顺序的.
SLa*_*aks 95
您需要调用该hasOwnProperty函数来检查属性是否实际定义在对象本身(而不是其原型),如下所示:
for (var key in widthRange) {
if (key === 'length' || !widthRange.hasOwnProperty(key)) continue;
var value = widthRange[key];
}
Run Code Online (Sandbox Code Playgroud)
请注意,您需要单独检查length.
但是,你根本不应该在这里使用数组; 你应该使用常规对象.所有Javascript对象都充当关联数组.
例如:
var widthRange = { }; //Or new Object()
widthRange[46] = { sel:46, min:0, max:52 };
widthRange[66] = { sel:66, min:52, max:70 };
widthRange[90] = { sel:90, min:70, max:94 };
Run Code Online (Sandbox Code Playgroud)
Mik*_*Kay 18
如果您正在进行任何类型的数组/集合操作或检查,我强烈建议您使用Underscore.js.它很小,经过充分测试,可以节省几天/几周/年的javascript头痛.这是它的键功能:
按键
检索对象属性的所有名称.
_.keys({one : 1, two : 2, three : 3});
=> ["one", "two", "three"]
Run Code Online (Sandbox Code Playgroud)