首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改JSON对象数组的顺序

更改JSON对象数组的顺序
EN

Stack Overflow用户
提问于 2017-01-18 20:53:25
回答 3查看 48关注 0票数 0

我是Javascript的初学者。我正在使用Javascript创建一个具有两个JSON数组的项目:

代码语言:javascript
复制
 var interfaces = [
                {id:'123123-12-31-23',mac:'234',flowid:'1',status:'deployed'},
                {id:'456456-12-31-23',mac:'45645',flowid:'2',status:'deployed'},
                {id:'123123-12-31-234',mac:'45',flowid:'3',status:'deployed'},
                {id:'456456-12-31-234',mac:'89',flowid:'4',status:'deployed'}
            ];

    var reorderedInterfaces =   [

                {id:'456456-12-31-23',mac:'45645',flowid:'2',status:'deployed'},
                {id:'456456-12-31-234',mac:'89',flowid:'4',status:'deployed'},
                {id:'123123-12-31-234',mac:'45',flowid:'3',status:'deployed'},
                {id:'123123-12-31-23',mac:'234',flowid:'1',status:'deployed'},
            ];

我需要以下输出:

代码语言:javascript
复制
var finalOutput = {
    1:2,
    2:4,
    3:3,
    4:1
}

下面是我的代码:

代码语言:javascript
复制
var obj = {}
    for(i=0; i<interfaces.length; i++){
        console.log()
        for(j=0; j<reorderedInterfaces.length; j++){
            obj[interfaces[i].flowid] = reorderedInterfaces[j].flowid
            break;
        }

    }   
    console.log(obj)

这给了我错误的输出

EN

回答 3

Stack Overflow用户

发布于 2017-01-18 20:59:42

当迭代器i和j具有相同的值时,您只需赋值即可。

代码语言:javascript
复制
if(i == j)
{
  obj[interfaces[i].flowid] = reorderedInterfaces[j].flowid
  break;
}

代码语言:javascript
复制
var interfaces = [{
  id: '123123-12-31-23',
  mac: '234',
  flowid: '1',
  status: 'deployed'
}, {
  id: '456456-12-31-23',
  mac: '45645',
  flowid: '2',
  status: 'deployed'
}, {
  id: '123123-12-31-234',
  mac: '45',
  flowid: '3',
  status: 'deployed'
}, {
  id: '456456-12-31-234',
  mac: '89',
  flowid: '4',
  status: 'deployed'
}];

var reorderedInterfaces = [

  {
    id: '456456-12-31-23',
    mac: '45645',
    flowid: '2',
    status: 'deployed'
  }, {
    id: '456456-12-31-234',
    mac: '89',
    flowid: '4',
    status: 'deployed'
  }, {
    id: '123123-12-31-234',
    mac: '45',
    flowid: '3',
    status: 'deployed'
  }, {
    id: '123123-12-31-23',
    mac: '234',
    flowid: '1',
    status: 'deployed'
  },
];


var obj = {}
for (i = 0; i < interfaces.length; i++) {
  for (j = 0; j < reorderedInterfaces.length; j++) {
    if(i == j)
    {
    obj[interfaces[i].flowid] = reorderedInterfaces[j].flowid
    break;
    }
  }

}
console.log(obj)

票数 3
EN

Stack Overflow用户

发布于 2017-01-18 21:02:16

您只需要一个循环,并采用相同的索引。

代码语言:javascript
复制
var interfaces = [{ id: '123123-12-31-23', mac: '234', flowid: '1', status: 'deployed' }, { id: '456456-12-31-23', mac: '45645', flowid: '2', status: 'deployed' }, { id: '123123-12-31-234', mac: '45', flowid: '3', status: 'deployed' }, { id: '456456-12-31-234', mac: '89', flowid: '4', status: 'deployed' }],
    reorderedInterfaces = [{ id: '456456-12-31-23', mac: '45645', flowid: '2', status: 'deployed' }, { id: '456456-12-31-234', mac: '89', flowid: '4', status: 'deployed' }, { id: '123123-12-31-234', mac: '45', flowid: '3', status: 'deployed' }, { id: '123123-12-31-23', mac: '234', flowid: '1', status: 'deployed' }, ],
    result = {};

interfaces.forEach(function (a, i) {
    result[a.flowid] = reorderedInterfaces[i].flowid;
});

console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2017-01-18 21:28:57

更改您的代码

代码语言:javascript
复制
var obj = {}
    for(i=0; i<interfaces.length; i++){
        console.log()
        for(j=0; j<reorderedInterfaces.length; j++){
            obj[interfaces[i].flowid] = reorderedInterfaces[j].flowid
            break;
        }

    } 

代码语言:javascript
复制
var obj = {}
    for(i=0; i<interfaces.length; i++){
        for(j=0; j<reorderedInterfaces.length; j++){
            if(i==j){
               obj[interfaces[i].flowid] = reorderedInterfaces[j].flowid;
            }
        }

    } 

以获取预期输出。希望这能对你有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41719958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档