遍历递归结构并将数据添加到倒数第二个节点
Traverse a recursive structure and add data to second last node
我有一个对象
x = {
"y": 55.11,
"color": "#4572A7",
"level": 0,
"drilldown": {
"name": "MSIE versions",
"level": 1,
"color": "#4572A7",
"categories": ["MSIE 8.0", "MSIE 6.0", "MSIE 7.0", "MSIE 9.0"],
"data": [
{
"y": 33.06,
"color": "#4572A7",
"level": 1,
"drilldown": {
"name": "drilldown next level",
"level": 2,
"color": "#4572A7",
"categories": ["a", "b", "c"],
"data": [23,54,47]
}
},
]
}
}
注意,当我向对象添加新属性时,这实际上可以深入到任何深度,但它是像这样的特殊格式
x['drilldown] = {}
x.drilldown['data] =[]
....and so on....
所以假设在某个时刻我有以下对象结构:
x {
drilldown {
data [
drilldown {
data [1,2,3]
}
]
}
}
.....................
我需要转到对象"x"的倒数第二个"data"元素并推送新值。因此,根据我上面的例子,它将是这样的:
x.drilldown.data.push(10);
因此,我需要在对象"x"中找到倒数第二个数据属性,然后在其中推送值
x倒数第二个数据数组.push(10);
我该怎么做?
=================================================
【新增解决方案】
我添加了下面的代码,它运行良好。我希望这是正确的做法:
var data = [10,11,12];
var datatemp = x.drilldown;
var datatempvar = {};
for (;typeof datatemp != 'undefined';)
{
datatempvar = datatemp;
datatemp = datatemp.drilldown;
}
for(it=0;it<data.length; it++)
datatempvar.data.push(data[it]);
谢谢大家,这个论坛帮了我很多。
如果一个数据数组包含多个值,尤其是一些具有向下钻取和一些纯值的对象,该怎么办?
在任何情况下,您都必须设置一个循环,该循环测试是否还有两个级别的向下钻取,并对每个级别执行此操作。当它断开时,当前级别就是要添加元素的级别。
根据这个问题,我不确定你想要的是"倒数第二"项,还是最后一项。
但这里有一个例子,它将倒数第二项和最后一项都隔离开来。然后它在最后一项上推送一个值。
<html>
<head>
<script type="text/javascript">
x = {
"drilldown": {
"data":
{
"drilldown": {
"data": [23,54,47]
}
}
}
}
function pushValue(dataItem, value) {
var parent = null;
var child = dataItem;
while(child.drilldown != null) {
parent = child;
child = child.drilldown.data;
}
// Child is now the last item in the structure
// and parent is the second last item
child.push(value);
}
function performTest() {
pushValue(x, 36);
}
</script>
</head>
<body>
<button onclick="performTest()">Run</button>
</body>
</html>
相关文章:
- [^/:]|正则表达式改进的倒数
- 带有图像背景的简单倒数计时器
- Javascript 倒数计时器 - 客户端时间与 mySQL 时间
- 在 Canvas 中使用 JS 倒数计时器和 requestAnimationFrame
- 使用 jQuery 从字符串中获取倒数第二个字符的位置
- 查找表中倒数第二行
- 无法返回 JSON 数组对象的倒数第二个元素的值
- 在表中第一个tr的倒数第二个td中选择按钮-使用jQuery选择器
- 将tabindex设置为“;最后一个元素“;以及“;倒数第二元素“-可能的
- 遍历递归结构并将数据添加到倒数第二个节点
- 倒数第二的第n个孩子没有'对我来说不起作用
- 如何在JavaScript中从数组中的每个字符串中选择倒数第二个单词
- 得到倒数第二的索引
- 使用javascript获取url中倒数第二个参数
- 替换倒数第二个符号
- 检索最后的&从Ember.js模型的倒数第二个记录
- 获取数组的倒数第二项
- 如何定位倒数第二个孩子的孩子
- 选择倒数第二个元素
- 如何在倒数第二个记录停止JS循环?(xml数据)