为多个子节点运行每个函数的正确方法是什么
What is the proper way to run each function for many child nodes?
我有一个数组和许多对象。我希望能够运行每个函数来更改每个files/a
,并在每个subpage > file
节点中使用files/and
。如何使用适当的 each 或循环函数来执行此操作?我想到了这一点,这就是我脑海中的结构,看起来像是可怕的解决方案。
$.each(main, function( index, value ) {
$.each(index.subpage, function( index, value ) {
$.each(index.files, function( index, value ) {
value.replace("files/a", "files/and");
});
});
});
主要对象如下所示。
{
"main": [
{
"title": "AAA",
"hash": "a",
"subpage": [
{
"title": "b",
"hash": "b",
"subpage": [
{
"title": "c",
"hash": "c",
"subpage": [],
"files": [
{
"files/a/b/c/01_clandestino_dev%20%282%29.jpg": {}
},
{
"files/a/b/c/01_clandestino_dev%20%283%29.jpg": {}
}
],
"content": "",
"layout": "standart"
}
],
"files": [
{
"files/a/b/01_clandestino_dev%20%282%29.jpg": {}
},
{
"files/a/b/01_clandestino_dev%20%283%29.jpg": {}
}
],
"content": "asd123",
"layout": "standart"
}
],
"files": [
{
"files/a/01_clandestino_dev.jpg": {}
},
{
"files/a/01.Creative_Collective_Effect_Overview.jpg": {}
},
{
"files/a/01.Bor%C3%A5s_H%C3%B6gskola_Website_Narrow.jpg": {}
}
],
"content": "AAAb",
"layout": "standart",
"menuItem": "true"
}
]
}
递
归是唯一的解决方案。你需要编写一个处理"页面"的函数:
- 使用递归处理当前页面中的每个子页面
- 处理当前页面中的每个文件
每个文件都是一个具有一个键的对象;您需要使用 delete
运算符添加新键并删除旧键。
var o = {
"main": [{
"title": "AAA",
"hash": "a",
"subpage": [{
"title": "b",
"hash": "b",
"subpage": [{
"title": "c",
"hash": "c",
"subpage": [],
"files": [{
"files/a/b/c/01_clandestino_dev%20%282%29.jpg": {}
}, {
"files/a/b/c/01_clandestino_dev%20%283%29.jpg": {}
}],
"content": "",
"layout": "standart"
}],
"files": [{
"files/a/b/01_clandestino_dev%20%282%29.jpg": {}
}, {
"files/a/b/01_clandestino_dev%20%283%29.jpg": {}
}],
"content": "asd123",
"layout": "standart"
}],
"files": [{
"files/a/01_clandestino_dev.jpg": {}
}, {
"files/a/01.Creative_Collective_Effect_Overview.jpg": {}
}, {
"files/a/01.Bor%C3%A5s_H%C3%B6gskola_Website_Narrow.jpg": {}
}],
"content": "AAAb",
"layout": "standart",
"menuItem": "true"
}]
};
function process_page(page) {
if (page.main || page.subpage) {
$.each(page.main || page.subpage, function(i, subpage) {
process_page(subpage);
});
}
if (page.files) {
$.each(page.files, function(i, file) {
$.each(file, function(oldname, value) {
var newname = oldname.replace("files/a", "files/and");
console.log("old: " + oldname);
console.log("new: " + newname);
file[newname] = value;
delete file[oldname];
});
});
}
}
process_page(o);
console.log(o);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
相关文章:
- 打破承诺链的好方法是什么
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- knex:根据结果创建数组的合适方法是什么
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 使用Modernizr检测移动设备最可靠的方法是什么
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 让会话值可用于JavaScript的好方法是什么
- 从AngularJs获取谷歌地图对象的正确方法是什么
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么
- 列出没有 mysql 的元素的最佳方法是什么
- 克服错误的更优雅的方法是什么:需要对象说明符.当通过JXA通过Messages发送SMS时,参数没有对象说明符
- 使用较少代码隐藏和显示选择菜单内容的更好方法是什么?javascript
- 在 Javascript 中实现解耦代码/回调的正确方法是什么?
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么