繁体   English   中英

给定一个函数,该函数返回嵌套JavaScript对象的“ [prop1] [prop2] [prop3]”,如何获取object [prop1] [prop2] [prop3]的值? [重复]

Given a function that returns me “[prop1][prop2][prop3]” for a nested javascript object, how do I get the value of object[prop1][prop2][prop3]? [duplicate]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在编写一个使用Javascript将数组转换为List的函数。

如果输入数组如下:

let inputArray = [1,2,3]

输出对象应如下所示:

let outputList = { 
    value: 1, 
    rest: {
        value: 2,
        rest: {
            value : 3,
            rest: null } } }

我有以下函数,该函数接受嵌套对象作为其参数并返回一个字符串,该字符串表示对象中属性为null的位置:

function getLastValue(object) {
   let s = '';
   if (object.rest) {
     return s += '[rest]' + getLastValue(object.rest);
   } else {
     return s;
}

下面的函数将数组转换为列表:

var list = {value: '', rest: null};

function constructList(arr) {
    for (let prop of arr) {
        let lastValue = getLastValue(list);
        `${list}${lastValue}`.value = prop;
        `${list}${lastValue}`.rest = null;
    }
    return list;
}

由于${list}${lastValue}是字符串, constructList函数无法工作。 我需要从上面转换

'list[rest][rest]' 

list[rest][rest]

任何帮助表示赞赏!

1 个回复

这是使用reduceRight的好地方-首先构造最里面的对象,并使其成为累加器的新值,该值将分配给下一个最里面的对象的rest属性,依此类推:

 const constructList = arr => arr.reduceRight( (rest, value) => ({ value, rest }), null ); console.log( constructList([1, 2, 3]) ); 

要修复您的原始代码,而不是构造一个试图引用嵌套对象的字符串 ,而是遍历嵌套结构以查找最里面的rest属性,然后返回不包含真实的rest属性的对象:

 function getLastValue(obj) { while (true) { if (!obj.rest) return obj; obj = obj.rest; } } var list = { value: '', rest: null }; function constructList(arr) { for (let prop of arr) { const nestedObj = getLastValue(list); nestedObj.value = prop; nestedObj.rest = {}; } getLastValue(list).rest = null; return list; } console.log( constructList([1, 2, 3]) ); 

3 如何指定 在wix .wxs文件中

我想在wix .wxs文件中的Wix安装程序中将属性指定为受限属性。 任何想法? 希望将PROP1 , PROP2私有/安全。 尝试将它们设置为小写,但RegistrySearch不接受: 错误CNDL0012:属性/ @ Id属性的值'Prop1'不能包含小写字符 ...

6 Javascript - 更新对象道具的函数

我想要更新元素道具的功能。 像这样的东西 执行将如下所示: 它正在工作,但我想将 propName 作为一个函数传递以避免字符串:像这样: 但我不确定这应该如何实现,我有这样的东西,但它不起作用 你能帮助我吗? 编辑我想要更通用的解决方案,并且我想避免硬编码字符串,例如我有: ...

7 如何在另一个道具之后插入对象道具?

所以我有这个构造函数,它将返回一个带有这个道具的对象: 在某些情况下,我想设置prop,例如在estateType prop之后设置“ test”。 怎么做? 我知道,对象道具没有顺序,它们有2条规则,如果道具名称是数字,它将按照ASC顺序排序,但是如果它是字符串,它将按照我在构造函数中创建的 ...

8 JavaScript 访问对象道具 [重复]

这个问题在这里已经有了答案: 如何访问以数字开头的对象属性(语法错误:意外的标识符) (1 个回答) 12 个月前关闭。 ...

9 如何打印按道具值过滤的对象的道具名称

我有一个对象 我想记录第二个道具“beta”的标题 我无法通过“查找”找到道具值 但是我如何提取道具名称 在日志中我想像这样打印: 结果必须是这样的: “第二个道具名称是测试版” Object.keys(arr)仅返回道具数组["alfa", "beta"]并按 id 查找返回u ...

10 检查obj.prop1.prop2.prop3.prop4.prop5值是否为null

如果我有一个obj,并且我想使用obj.prop1.prop2.prop3.prop4.prop5获得prop5,但是如果它为null,则可以返回“ null”。 如果obj.prop1.prop2为null,它将引发prop3异常。 因此,我必须拥有一堆if-null语句来检查每个属性 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM