相关疑难解决方法(0)

将JSON对象的键转换为点表示法路径

我不想使用已知点符号访问深层对象,而是反过来:从深层对象的键构建点符号字符串.

所以给出以下JSON对象:

{
  great:{
    grand:{
      parent:{
        child:1
      },
      parent2:1
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想获得以下数组路径:

[
  "great.grand.parent.child",
  "great.grand.parent2"
]
Run Code Online (Sandbox Code Playgroud)

提前致谢!

javascript json

5
推荐指数
1
解决办法
3547
查看次数

引导表-如何访问数据源对象中的内部元素

假设我的数据源对象看起来像这样:

[{
   "id": 123,
   "name": "blabla1",
   "kids": {
      "id": "kid1",
      "name": "kk1"
   }
},{
   "id": 456,
   "name": "blabla2",
   "kids": {
      "id": "kid2",
      "name": "kk2"
   }
}]
Run Code Online (Sandbox Code Playgroud)

这是一个包含2个对象的列表(数组),每个对象带有“ kids”键,其中包含一个带有键的内部对象,依此类推。

使用引导表时,每一列都连接到源对象中的键,例如:

<th data-field="id">ID</th>
Run Code Online (Sandbox Code Playgroud)

这里的问题是如何定义要连接到源对象中的内部键的列?

我尝试了以下操作(适用于上面的示例数据):

<th data-field="kids.id">Inner ID</th>
Run Code Online (Sandbox Code Playgroud)

而且它不起作用。:(

PS:

我知道我可以通过实现指定的“数据格式器”属性来格式化每一列的数据,但是在这种情况下,我更喜欢找到一种更直接,更快速的方法来完成所需的工作。

twitter-bootstrap

4
推荐指数
1
解决办法
1万
查看次数

findOneAndUpdate覆盖作为doc传递的2+级深层对象中的属性

假设我有这个架构:

var UserSchema = new Schema({
    name : {
        firstName : String,
        lastName : String
    }
});
Run Code Online (Sandbox Code Playgroud)

我创建了这个用户:

User.create({
    name : {
        firstName : Bob,
        lastName : Marley
    }
}, function (err, user) {
    if(err) {
        return console.error(err);
    } else {
        return console.log(user);
    }
});
Run Code Online (Sandbox Code Playgroud)

我注意到如果我这样做:

User.findOneAndUpdate({_id: userId}, { name: { firstName : "Damian" } }, function (err, user) {
    if(err) {
        return console.error(err);
    } else {
        return console.log(user);
    }
});
Run Code Online (Sandbox Code Playgroud)

我的用户现在是:

user = {
    name : {
        firstName : …
Run Code Online (Sandbox Code Playgroud)

mongoose node.js

4
推荐指数
1
解决办法
1033
查看次数

展平/合并嵌套地图

假设我们有这样的地图:

%{"a": %{"b": 2, "c":5}, "d": 1}
Run Code Online (Sandbox Code Playgroud)

elixr 中是否有类似的函数(js 回答同一问题)?

最终结果应该是:

%{"a.b": 4, "a.c":5, "d": 1}
Run Code Online (Sandbox Code Playgroud)

elixir

3
推荐指数
1
解决办法
2515
查看次数

使用 JavaScript 查找给定值的完整对象路径

我有一个包含项目(只有name属性)和组(带有children属性,它们可能包含项目或其他组)的对象数组,我需要获得一个完整的needle值路径,所以在这种情况下它会是myObj[2]["children"][0]["children"][1]["children"][0],加上我仅限于相当旧的 JS 版本 ECMA 262(我在 Photoshop 中使用它)

var myObj = [
{
    "name": "group1",
    "children": [
    {
        "name": "group2",
        "children": [
        {
            "name": "item0"
        }]
    }]
},
{
    "name": "item1"
},
{
    "name": "needleGroup",
    "children": [
    {
        "name": "needleNestedGroup",
        "children": [
        {
            "name": "item3"
        },
        {
            "name": "needleNestedDeeperGroup",
            "children": [
            {
                "name": "needle"
            }]
        }]
    }]
}];
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是将对象转换为数组或数组,这样处理起来会更容易,所以我的对象变成了

[
    [
        [
            "item0"
        ]
    ],
    "item1", 
    [
        [
            "item3", 
            [
                "needle"
            ]
        ] …
Run Code Online (Sandbox Code Playgroud)

javascript

3
推荐指数
1
解决办法
4938
查看次数

按键查找和检索对象值,包括嵌套对象

我试图在不知道对象valuekey情况下找到一个对象,包括嵌套对象,因此该函数将获取一个键和一个对象并返回值或未定义。这是我的功能:

/* Iterate over object and include sub objects */

function iterate (obj, key) {

    for (var property in obj) {
        if (obj.hasOwnProperty(property)) {
            //in case it is an object
            if (typeof obj[property] == "object") {
                if (obj.hasOwnProperty(key)) {
                    return obj[key]; //return the value 
                }
            }
            else {
                iterate(obj[property]);
            }
        }   
    }

    return undefined;
}
Run Code Online (Sandbox Code Playgroud)

return在一个循环内调用,所以它会更有效率(希望如此......)。

1.有没有人准备好这个功能?这个不行。

2.有人知道要改变什么才能使它工作吗?

任何帮助,包括angular.js功能都会很棒。

谢谢。

javascript javascript-objects angularjs

2
推荐指数
1
解决办法
4692
查看次数

Typescript/Angular/ES6:我终于可以让`hasOwnProperty()`死于for循环吗?

我总是不喜欢hasOwnProperty()在javascript中检查循环对象时的需要:

for ( var key in object ) {
    if ( !object.hasOwnProperty( key ) ) {
        continue;
    }

    // Now I can do whatever I needed to do
}
Run Code Online (Sandbox Code Playgroud)

它似乎总是浪费垂直空间来遍历对象中的键,然后必须明确检查以确保这些键不是来自其他地方.我显然很熟悉为什么这在javascript中是必要的,特别是由于旧的库有时会将东西注入原型链(咳嗽原型咳嗽).

但是,据我所知,棱角分明没有这样的东西.打字稿肯定没有理由.我无法想象任何现代的JavaScript框架会.因此,在现代Angular应用程序(或任何现代JavaScript应用程序)中跳过此类检查的可能缺点是什么.我只是冒着自己的团队意外修改原型(或意外导入修改原型的库)而导致问题的风险,还是有更多我不知道的麻烦空间?如果我尝试这样做,原型链会以什么其他方式咬我?

for ( let key in object ) {
}
Run Code Online (Sandbox Code Playgroud)

我自己的测试没有发现任何问题,但我可能会遗漏一些明显的东西.是的,我Object.keys( object )在mondern js/ts中知道.它完成了工作,但我不认为它像a一样干净for ... in,如果我能让它hasOwnProperty()死,我宁愿使用它.

typescript ecmascript-6 angular

1
推荐指数
1
解决办法
1592
查看次数

JavaScript:通过字符串数据路径更改 JSON 中的数据

假设我有以下 JSON,它可以轻松地来回转换为 JavaScript 对象:

{
    "foo": {
        "bar": "Common substitute word",
        "baz": "Another common substitute word",
        "questionWords": {
            "wat": "Inadequate question word",
            "wut": "Even more inadequate question word"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在另一个 JSON 文件中收到有关此 JSON 的修改,如下所示:

{
    "foo.questionWords.wut": "A question word to avoid"
}
Run Code Online (Sandbox Code Playgroud)

所以要修改的路径以字符串形式给出。我必须通过新数据修改第一个 JSON。

但也可能不存在新的数据路径:

{
    "foo.callingWords.dude": "Commonly used synonym for pal"
}
Run Code Online (Sandbox Code Playgroud)

并且新的数据路径可能具有不可确定的深度

{
    "who.knows.how.deep.we.will.go": "Look, a penny!"
}
Run Code Online (Sandbox Code Playgroud)

在没有 JS 库的情况下,仅通过普通的 Vanilia JS 处理此问题的最佳方法是什么? …

javascript json

1
推荐指数
1
解决办法
1143
查看次数