gpt4 book ai didi

javascript - 挖掘至最深的 .value 或 .content

转载 作者:行者123 更新时间:2023-11-28 00:28:59 24 4
gpt4 key购买 nike

我正在尝试编写一个函数来挖掘对象,直到它到达最后一个 .value.content 属性。我写了这篇文章,但我一生都无法弄清楚它为什么会崩溃。

    var jscGetDeepest = function(obj) {
try {
console.info(Math.round(Math.random() * 10) + ' starting jscGetDeepest:', obj, obj.toString());
} catch(ignore) {}

while (obj && ('contents' in obj || 'value' in obj)) {
if ('contents' in obj) {
obj = obj.contents;
} else if ('value' in obj) {
obj = obj.value;
}
//console.info('loop jscGetDeepest:', obj.toString());
}

if (obj || obj === 0) {
obj = obj.toString();
}
console.info('finaled jscGetDeepest:', obj);
return obj;
}

最佳答案

当下一次迭代中的内部值不是对象时,就会出现此问题。在这种情况下,您会收到一条错误消息,因为 in 操作数不能与基元一起使用。

要修复它,请在尝试深入之前检查对象。这是一个修复的稍微改进的版本,使用 JSON.stringify 而不是 toString (也许更好地返回对象本身而不对其进行字符串化?):

var jscGetDeepest = function (obj) {

while (typeof obj === 'object' && obj !== null && ('contents' in obj || 'value' in obj)) {
if ('contents' in obj) {
obj = obj.contents;
} else if ('value' in obj) {
obj = obj.value;
}
}

if (typeof obj === 'object') {
obj = JSON.stringify(obj);
}

return obj;
}

alert( jscGetDeepest({value: {name: 2, contents: {name: 3, value: 23}}}) );
alert( jscGetDeepest({value: {name: 2, value: {name: 3, contents: {name: 4}}}}) );

关于javascript - 挖掘至最深的 .value 或 .content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29199369/

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