对数组中的json对象进行迭代
Iterating over json objects in array
我有一个名为mainarray的数组,它有多个json对象。
mainarray:Object
>key1: Array[30]
>key2: Array[20]
我想对数组[30]和数组[20]进行排序。我正试着这样做:
mainarray.forEach((arrayinner)
{
//sort
});
但我得到了一个错误:因为无法读取未定义的属性
我如何迭代?而且密钥名称是动态的,我不能硬编码它并开始迭代/
您需要function关键字来进行有效的回调声明。
mainarray.forEach(function (arrayinner)
// ^^^^^^^^
{
//sort
});
但问题更深层:
您需要获取密钥并对其进行迭代,然后获取适当的值来应用排序
Object.keys(mainarray).forEach(function (key) {
mainarray[key].sort();
});
您可以获得要在上迭代的密钥数组
Object.keys ( mainarray ).forEach( function( arrayinner ){
arrayinner.sort();
});
如果mainarray
内的所有密钥可能没有Array
值,则可以在排序之前进行检查
Object.keys ( mainarray ).forEach( function( arrayinner ){
Array.isArray( arrayinner ) || arrayinner.sort();
});
您可以使用$.each
$.each(mainarray, function(key,val){
val.sort((a,b) => {return a > b ? 1 : a < b ? -1 : 0});
});
因为CCD_ 4是一个阵列。它的引用将在callBack函数内部共享。因此,在callBack中影响该数组将影响原始数组。
演示
您可以通过循环对象本身的属性并对它们所包含的数组进行排序来实现这一点,比如:
for (var key in mainarray) {
if (mainarray[key] === Array)
mainarray[key].sort();
}
工作示例
请注意,默认情况下,sort()
仅使用基本的字母数字排序逻辑。如果你需要更复杂的东西,你需要自己实现。
相关文章:
- 如何在DataTables 2.1中迭代对象数组
- 基于使用angular在下拉列表中选择的对象,迭代对象内部的对象
- 为什么数组在对象内部迭代对象时存储重复值
- 为什么我不能用for Each迭代对象
- 为什么字符串在 ES2015 中是可迭代对象
- 如何通过迭代对象数组来删除某些项目
- 在不同数据选项之间循环迭代对象
- 延迟迭代对象
- 在 es6 中迭代对象并返回新对象
- Javascript:如何迭代对象[Key:value],但跳过一些键([最快的方法])
- 如何使用Meteor.js中的Template辅助对象迭代对象中的两个数组
- JavaScript如何在内部迭代对象键
- 如何迭代对象/数组中的项,并构建嵌套的JSON
- 创建一个生成器来迭代对象属性排列
- 使用map迭代对象数组
- 使用 for 循环,如何迭代对象以向其添加 id 属性
- 用于迭代对象的 for 循环
- 在角度ng重复中迭代对象的数组
- 如何在 Javascript 中迭代对象数组
- 迭代对象内部的对象