Javascript:用一个不规则的键循环遍历对象中的所有记录
Javascript: loop through all records within an object with an irregular key
更新
我有一个对象var myObject = {};
我用这样一个密钥构建它:
myObject[key] = {
name: ...
};
想象一下我创造了三张唱片:
myObject[13] = {...};
myObject[281] = {...};
myObject[76] = {...};
现在我想循环遍历对象,就好像它是一个数组一样。
var i,
length = myObject.length; // ?? Problem here 'cos it ain't an array
for (i = 0; i < length; i += 1) {
????
};
我如何引用????
中的三个元素?我不知道数字13281&76并且CCD_ 3将不会找到第一个记录。
谢谢。
如果键不是连续的,就不应该使用数组。改为使用对象:
var myObject = {};
要在对象的键上循环,可以使用for..in
语法:
for (var key in myObject) {
var value = myObject[key];
}
为了使您当前的代码工作,您必须循环所有的键,并检查它们是否有值:
for (var i = 0; i < myArray.length; i++) {
var value = myArray[i];
if (typeof value === 'undefined') continue;
console.log(key, ' -> ', value)
}
如果您使用的是现代JavaScript引擎:
myArray.forEach(function(val, key) {
// val = the value
// key = the index
});
就是这样。要得到它的大小(在这种情况下是3(。。。
var size = myArray.reduce(function(prev) {
return ++prev;
}, 0);
如果你想让它在旧的浏览器中运行,你需要做一些其他的事情。最简单的解决方案可能是自己实现这样的东西:
for (var i = 0; i < myArray.length; i ++) {
var val = myArray[i];
if (typeof val !== "undefined") {
console.log(val);
}
}
为了获得它的大小,这是一个类似的努力(如果你同时使用这两种方法,你可以将其与上述方法相结合(:
var size = 0;
for (var i = 0; i < myArray.length; i ++) {
if (typeof myArray[i] !== "undefined")
size ++;
}
如果你想像上面那样使用forEach
和reduce
,你需要找到一个垫片(基本上,你需要自己实现这些函数(。我建议使用本页上两个forEach
垫片和本页上reduce
垫片中较大的一个,或者使用一个将它们全部垫片的库。
相关文章:
- 循环遍历以数组为值的Javascript对象
- 循环遍历包含另一个表单的表单
- JS.循环遍历多维数组,以计数元素在每列中的出现次数
- js循环遍历单击的元素子节点
- 根据PHP中数组的长度在Google Maps API中循环遍历标记
- 循环遍历元素jquery选择器
- 无法在javascript中循环遍历对象数组
- 在循环遍历对象 HTMLDivElement 时,应用 ChileNode 样式 zindex 在 firefox 和
- 如何在DataTablesjQuery中循环遍历所有行
- 使用函数for循环遍历对象以更改值,然后返回结果
- 遍历 jQuery:循环遍历子项
- 循环遍历平行层
- 循环遍历 jqGrid 中的 colModels 名称
- jQuery 插件不会循环遍历匹配的项目
- 循环遍历 JSON 对象
- 一次循环遍历一组
- 循环遍历循环的数字序列
- 如何在 JavaScript 中遍历循环
- 循环遍历循环按钮元素以操作循环输入
- 遍历循环,在一个范围内随机更改变量的值,但满足所有变量