大神们好,我现在有一个这样的需求,后台返回一个二维的数组,然后我根据参数的不同转化为多维数组;
后台返回的数组:(这个是我手写的假数据)
现在要根据这个数组来做一些改变,下面是我希望得到的数据
说明一下逻辑:
根据数组第一个值中 'id' 来查找剩下的数组中是否有 'id' == 'relation' ,如果有,就要把当前检查的这个放在与它相等的值的 ['child'] 属性中;
表达能力不好,我还是举例说明把。
当到这个数据后,获取第一个的 ['id'] 值 arr0,也就是64,然后再循环整个数组,看看有没有哪个的 ['relation'] 属性值与当前的 ['id'] 值相等,现在找到了 第二个和第七个是满足条件的,此时,就把第二个和第七个放到第一个数组的 ['child'] 属性中,然后,再查找数组中第一个的 ['peiou'] 值,如果 ['peiou'] 不是0,那就看看有没有哪个属性的 ['id'] 属性值与当前的 ['peiou'] 相等, 如果有,就放到 ['peiouArr'] 中。
嗯,就是这样,求大神给个解决办法!
我现在是这样写的:
function arrCombination(arr) {
for (var i = 0; i < arr.length; i++)
for (var j = 0; j < arr.length; j++) {
if (arr[i]["id"] === arr[j]["relation"])
arr[i]["child"].push(arr[j]);
if (arr[i]["peiou"] !== 0 && arr[i]["peiou"] === arr[j]["id"])
arr[i]["peiouArr"].push(arr[j]);
}
return arr[0];
}
但老是有问题,有别的解决办法吗?
相关分类