关于charts.update({JSON })更新数据时的一个显示问题

问题是这样的,我加载了一个highcharts的图例,显示的数据格式是

series: [{
	name: "科室1",
	data: [{
		id: '2',
		name: 'CT',
		y: 32,
		drilldown: true
	}, {
		id: '2',
		name: 'MR',
		y: 15,
		drilldown: true
	}]
}]

加载时没问题,这里ID是同样的都是2,是因为我在下钻的时候需要用到这个ID来查询数据
这里我在继续编写代码时出现一个问题,在还没有开始开发下钻功能时,我这个查询图例有查询条件赛选框
我再筛选框输入条件后请求后台返回新的结果json
结果我模拟了一个和上面数据格式一样的

[{
	name: "科室1",
	data: [{
		id: '2',
		name: 'MF',
		y: 22,
		drilldown: true
	}, {
		id: '2',
		name: 'RF',
		y: 35,
		drilldown: true
	}]
}]

然后我使用charts.update()来更新图例,发现在加载是ID一样能显示所有数据,但是使用更新来加载数据时,返回的结果json有2条或者多条时,ID一样的情况下,只加载了最后一个数据,前面的不加载出来,这是什么歌情况呢
下面是图(只能选择一张图):

虽然已经知道原因,但是想问问能不能有什么方法解决,比如设置数据更新的时候使用name去更新而不是使用ID去匹配更新,造成这个原因的就是因为ID的重复原因
现在的解决办法就是不能使用update来更新数据源,只能先删除所有的series然后在一个一个添加进去

解决办法:

  1. chart.update 最后一个参数 oneToOne 设置为 true,改参数表示针对数组对象是否根据数组下标一对一的更新,区别默认的通过 id 关联更新 (注意:测试过,改方法不可行)

  2. 将你的 id 属性换成其他的吧,比如 _id。这个问题其实很好理解,id 是图表内部需要参与计算的属性,在没有配置进行修改的时候(暂时没有根据 name 匹配的配置,其实也没必要),只能是避免这种情况,毕竟改数据属性比改内部的复杂规则好。

非常感谢,第一种我去湿了,但是好像不会设置,不知道是不是我的设置问题还是我版本问题
chartss.update({
series: $.parseJSON(dataJsonJson.Msg)
}, true, true)
第二个方法确实是一个很好的解决办法
非常感谢

我刚刚仔细看了一下文档及测试例子,是我理解错误, oneToOne 设置为 true 还是会匹配 id,所以用方法2 吧。

确实,使用方法2可以无限扩展自己需要的数据,谢谢你的解答,非常感谢大佬