gpt4 book ai didi

javascript - 递归操作javascript对象数据结束

转载 作者:行者123 更新时间:2023-11-28 19:54:29 26 4
gpt4 key购买 nike

有没有办法遍历任意 Javascript 对象,并在其数据末端更改它,无论它不是另一个嵌套对象?

鉴于以下情况,我可以记录一个对象,其中“123”、“bar”、“die”、“or”变为“xyz”吗?

var jso = {
hello:[
{ foo:'bar' },
{ abc: { def:'123' } }
],
world:[
{ ride:['or','die'] }
]
};

function recurse(object) {
if (Object.prototype.toString.call(object) === '[object Array]') {
var l = object.length;
while(l--){
recurse(object[l])
}
} else if(typeof object === 'object') {
for(var key in object) {
recurse(object[key])
}
} else {
object = 'xyz';
}
}

recurse(jso)
console.log(jso)

最佳答案

object = 'xyz';

这不起作用,因为它只是更改函数调用本地的object变量。要实际修改对象,您需要分配给属性:

function recurse(object) {
if(Object.prototype.toString.call(object) === '[object Array]'){
for (var l = object.length; l--; ) {
if (typeof object[l] == 'object')
recurse(object[l]);
else
object[l] = 'xyz';
}
} else {
for(var key in object) {
if (typeof object[key] == 'object')
recurse(object[key]);
else
object[key] = 'xyz';
}
}
}

或者(更好)

function recurse(object) {
if (typeof object !== 'object')
return 'xyz';

if (Object.prototype.toString.call(object) === '[object Array]'){
for (var l = object.length; l--; ) {
object[l] = recurse(object[l]);
}
} else {
for (var key in object) {
object[key] = recurse(object[key])
}
}
return object;
}

关于javascript - 递归操作javascript对象数据结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22825865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com