首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过比较两个键连接两个json数组

通过比较两个键连接两个json数组
EN

Stack Overflow用户
提问于 2017-01-04 09:46:26
回答 6查看 115关注 0票数 0

我不想通过比较每个数组中的两个字段来连接两个json数组(比如SQL :参见代码中的if ),并将第二个数组的值添加到第一个数组中。我试图通过使用嵌套循环来解决这个问题,并将值从内循环传递到外部循环(参见代码)。但结果总是ś0。

曼尼谢谢!

下面是代码示例:

代码语言:javascript
复制
var dmNodeGraph = [ { id: 'marathonschaatsteams',
        group: '9',
        type: 'child',
        color: '33cccc' },
      { id: 'KNSB', group: '9', type: 'child', color: '33cccc' },
      { id: 'stationshuisje',
        group: '9',
        type: 'child',
        color: '33cccc' },
      { id: 'RTV', group: '9', type: 'child', color: '33cccc' },
      { id: 'wachten', group: '5', type: 'child', color: '99cc00' },
      { id: 'smartcards', group: '9', type: 'child', color: '33cccc' } ]

 var groupByLink =  [ { key: 'stationshuisje-kpn-9', values: 1 },
      { key: 'RTV-tele2-9', values: 14 },
      { key: 'Spelen-kpn-9', values: 13 },
      { key: 'hoofdsponsor-kpn-9', values: 14 },
      { key: 'schaatsen-kpn-9', values: 13 },
      { key: 'KNSB-kpn-9', values: 17 },
      { key: 'klanten-ziggo-9', values: 3 },
      { key: 'kaarten-ziggo-9', values: 1 },
      { key: 'wachten-ziggo-9', values: 1 },
      { key: 'marathonschaatsteams-kpn-9', values: 1 },
      { key: 'wachten-tele2-9', values: 1 },
      { key: 'gebruiken-kpn-9', values: 1 },
      { key: 'wachten-kpn-9', values: 1 },
      { key: 'abonnementen-kpn-9', values: 2 },
      { key: 'wachten-Glasvezel-5', values: 1 },
      { key: 'smartcards-ziggo-9', values: 2 } ]



 $('#test').append('This is from the loop <br>')
 for (var i = 0; i < dmNodeGraph.length; i++){
       var id  = dmNodeGraph[i].id
       var group = dmNodeGraph[i].group
       var value
            //$('#test').append('<br> ------------------- id: ' + id + ' group: ' + group + '--------------------'  )
       // 4.A.1.A Loop per Node through the grouped links
       for (var gl = 0 ; gl < groupByLink.length ; gl++){
         //value = 0
         var keys = groupByLink[gl].key.split('-')
         if (keys[0] == id && keys[2] == group){
           value = groupByLink[gl].values 

           // Location A 
           //$('#test').append('<br> id: ' + id + ' group: ' + group + ' values: ' + value ) 
         }
        }
                // Location B
          dmNodeGraph[i].values = value
          $('#test').append('<br> id: ' + id + ' group: ' + group + ' values: ' + value ) 
         }

代码示例在jsFidle ( https://jsfiddle.net/L67nwzs0/22/ )中也可用。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-01-04 09:54:35

删除赋值value=0.//重写该值。

代码语言:javascript
复制
var dmNodeGraph = [ { id: 'marathonschaatsteams',
    group: '9',
    type: 'child',
    color: '33cccc' },
  { id: 'KNSB', group: '9', type: 'child', color: '33cccc' },
  { id: 'stationshuisje',
    group: '9',
    type: 'child',
    color: '33cccc' },
  { id: 'RTV', group: '9', type: 'child', color: '33cccc' },
  { id: 'wachten', group: '5', type: 'child', color: '99cc00' },
  { id: 'smartcards', group: '9', type: 'child', color: '33cccc' } ]

var groupByLink =  [ { key: 'stationshuisje-kpn-9', values: 1 },
  { key: 'RTV-tele2-9', values: 14 },
  { key: 'Spelen-kpn-9', values: 13 },
  { key: 'hoofdsponsor-kpn-9', values: 14 },
  { key: 'schaatsen-kpn-9', values: 13 },
  { key: 'KNSB-kpn-9', values: 17 },
  { key: 'klanten-ziggo-9', values: 3 },
  { key: 'kaarten-ziggo-9', values: 1 },
  { key: 'wachten-ziggo-9', values: 1 },
  { key: 'marathonschaatsteams-kpn-9', values: 1 },
  { key: 'wachten-tele2-9', values: 1 },
  { key: 'gebruiken-kpn-9', values: 1 },
  { key: 'wachten-kpn-9', values: 1 },
  { key: 'abonnementen-kpn-9', values: 2 },
  { key: 'wachten-Glasvezel-5', values: 1 },
  { key: 'smartcards-ziggo-9', values: 2 } ]



$('#test').append('This is from the loop <br>')
for (var i = 0; i < dmNodeGraph.length; i++){
   var id  = dmNodeGraph[i].id
   var group = dmNodeGraph[i].group
   var value=0;//declare here
		//$('#test').append('<br> ------------------- id: ' + id + ' group: ' + group + '--------------------'  )
   // 4.A.1.A Loop per Node through the grouped links
   for (var gl = 0 ; gl < groupByLink.length ; gl++){
     var keys = groupByLink[gl].key.split('-');
     if (keys[0] == id && keys[2] == group){
       value = groupByLink[gl].values 
     
       // Location A 
       //$('#test').append('<br> id: ' + id + ' group: ' + group + ' values: ' + value ) 
     }
		}
				// Location B
      dmNodeGraph[i].values = value
      $('#test').append('<br> id: ' + id + ' group: ' + group + ' values: ' + value );
	 }
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='test'>

</div>

票数 1
EN

Stack Overflow用户

发布于 2017-01-04 09:54:24

如果不想使用第三个变量,请尝试如下

代码语言:javascript
复制
dmNodeGraph.push.apply( dmNodeGraph, groupByLink );



console.log(dmNodeGraph) // contains both dmNodeGraph and groupByLink
票数 0
EN

Stack Overflow用户

发布于 2017-01-04 09:54:35

每次迭代时,将值初始化为0,最后一次聚合将丢失。

代码语言:javascript
复制
var dmNodeGraph = [ { id: 'marathonschaatsteams',
        group: '9',
        type: 'child',
        color: '33cccc' },
      { id: 'KNSB', group: '9', type: 'child', color: '33cccc' },
      { id: 'stationshuisje',
        group: '9',
        type: 'child',
        color: '33cccc' },
      { id: 'RTV', group: '9', type: 'child', color: '33cccc' },
      { id: 'wachten', group: '5', type: 'child', color: '99cc00' },
      { id: 'smartcards', group: '9', type: 'child', color: '33cccc' } ]
 
 var groupByLink =  [ { key: 'stationshuisje-kpn-9', values: 1 },
      { key: 'RTV-tele2-9', values: 14 },
      { key: 'Spelen-kpn-9', values: 13 },
      { key: 'hoofdsponsor-kpn-9', values: 14 },
      { key: 'schaatsen-kpn-9', values: 13 },
      { key: 'KNSB-kpn-9', values: 17 },
      { key: 'klanten-ziggo-9', values: 3 },
      { key: 'kaarten-ziggo-9', values: 1 },
      { key: 'wachten-ziggo-9', values: 1 },
      { key: 'marathonschaatsteams-kpn-9', values: 1 },
      { key: 'wachten-tele2-9', values: 1 },
      { key: 'gebruiken-kpn-9', values: 1 },
      { key: 'wachten-kpn-9', values: 1 },
      { key: 'abonnementen-kpn-9', values: 2 },
      { key: 'wachten-Glasvezel-5', values: 1 },
      { key: 'smartcards-ziggo-9', values: 2 } ]
 
 
 
 $('#test').append('This is from the loop <br>')
 for (var i = 0; i < dmNodeGraph.length; i++){
       var id  = dmNodeGraph[i].id
       var group = dmNodeGraph[i].group
       var value=0; // initiallize with 0 for ever new iteration
       for (var gl = 0 ; gl < groupByLink.length ; gl++){
         // value = 0 <-------- remove this one
         var keys = groupByLink[gl].key.split('-')
         if (keys[0] == id && keys[2] == group){
           value += groupByLink[gl].values 
         }
   		}
          dmNodeGraph[i].values = value
          $('#test').append('<br> id: ' + id + ' group: ' + group + ' values: ' + value ) 
		 }
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='test'>

</div>

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

https://stackoverflow.com/questions/41460687

复制
相关文章

相似问题

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