Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用每个对象的数组创建对象数组';姓名_Javascript_Arrays_Object - Fatal编程技术网

Javascript 使用每个对象的数组创建对象数组';姓名

Javascript 使用每个对象的数组创建对象数组';姓名,javascript,arrays,object,Javascript,Arrays,Object,我觉得离这里很近。场景:我在一条类似以下内容的消息中发送了一个JSON: {"objects": { "object_name1":{ "name":"object_name1", "otherData":"some other data" }, {"object_name2":{ "name":"object_name2", "otherData":"some more data" } }}

我觉得离这里很近。场景:我在一条类似以下内容的消息中发送了一个JSON:

{"objects": {
    "object_name1":{ 
        "name":"object_name1",
        "otherData":"some other data"
    },
    {"object_name2":{ 
        "name":"object_name2",
        "otherData":"some more data"
    }
}}
filteredKeyArray = ['object_name1','object_name2'];
newObjArray = [];
for(i in filteredKeyArray){
    for(key in objects){
    newObjArray.push(objects[i[key]]);
    }
}
如您所见,对象不在数组中。我使用函数创建了一个包含每个对象字符串名称的数组,然后使用if语句创建了另一个包含我想要的对象的数组,这引出了我当前的问题:

如何使用我创建的数组中包含的字符串值(对象键)创建对象数组

我试过这样的方法:

{"objects": {
    "object_name1":{ 
        "name":"object_name1",
        "otherData":"some other data"
    },
    {"object_name2":{ 
        "name":"object_name2",
        "otherData":"some more data"
    }
}}
filteredKeyArray = ['object_name1','object_name2'];
newObjArray = [];
for(i in filteredKeyArray){
    for(key in objects){
    newObjArray.push(objects[i[key]]);
    }
}
但是
newObjArray
只是显示所有未定义的内容。理想情况下,
newObjArray
显示如下内容:

{"objects": {
    "object_name1":{ 
        "name":"object_name1",
        "otherData":"some other data"
    },
    {"object_name2":{ 
        "name":"object_name2",
        "otherData":"some more data"
    }
}}
filteredKeyArray = ['object_name1','object_name2'];
newObjArray = [];
for(i in filteredKeyArray){
    for(key in objects){
    newObjArray.push(objects[i[key]]);
    }
}
[{“对象名称1”:{…},{“对象名称2”:{…}]


想法?

如果我理解您想要正确执行的操作,您想创建一个包含objectName子对象的iterable数组吗

我将按照下面的方法来做,如果您使用数组原型映射函数,您可以在一行代码中使用object.keys(target)迭代对象的所有键,并通过map返回您想要的属性(在本例中是内部子对象)作为数组元素

strangeObject = {
    "objects":{
        "objectName_1":{
            "name":"x",
            "otherData":"some other data"
        },
        "objectName_2":{
            "name":"y",
            "otherData":"some other data"
        }
    }
}
const arrayOfObjects = Object.keys(strangeObject.objects).map(key => strangeObject.objects[key])
console.log(arrayOfObjects)
// logs [ { name: 'x', otherData: 'some other data' },
// { name: 'y', otherData: 'some other data' } ]
映射为示例中的方法1 迭代filteredKeyArray,方法2
请注意,这些解决方案假设您的filteredKeyArray中有一个键来匹配子对象,当映射遍历时,您可能需要添加一个检查来检查filteredKeyArray的长度是否比映射迭代器长,或者如果使用方法1,则检查filteredKeyArray[i]是否未定义。如果使用方法2,在引用Object.keys(strangeObject.objects)[i]之前,您可能需要检查未定义的对象,因为您可能没有那么多适合于eDekKeyArray键的对象。

如果我正确理解您想要做的事情,您想创建一个包含objectName子对象的可移植数组吗

我将按照下面的方法来做,如果您使用数组原型映射函数,您可以在一行代码中使用object.keys(target)迭代对象的所有键,并通过map返回您想要的属性(在本例中是内部子对象)作为数组元素

strangeObject = {
    "objects":{
        "objectName_1":{
            "name":"x",
            "otherData":"some other data"
        },
        "objectName_2":{
            "name":"y",
            "otherData":"some other data"
        }
    }
}
const arrayOfObjects = Object.keys(strangeObject.objects).map(key => strangeObject.objects[key])
console.log(arrayOfObjects)
// logs [ { name: 'x', otherData: 'some other data' },
// { name: 'y', otherData: 'some other data' } ]
映射为示例中的方法1 迭代filteredKeyArray,方法2
请注意,这些解决方案假设您的filteredKeyArray中有一个键来匹配子对象,当映射遍历时,您可能需要添加一个检查来检查filteredKeyArray的长度是否比映射迭代器长,或者如果使用方法1,则检查filteredKeyArray[i]是否未定义。如果使用方法2,在引用Object.keys(strangeObject.objects)[i]之前,您可能需要检查未定义的对象,因为您可能没有那么多适合eRedKeyArray键的对象。

您输入的语法无效,特别是
},{
part-对象有键值对,而不仅仅是纯值。这不是有效的JSON-您从哪里获得的?您希望输出是什么?请发布一个,包括所需的输出。您输入的语法无效,特别是
},{
part-对象有键值对,而不仅仅是纯值。这不是有效的JSON-您从哪里获得的?您希望输出是什么?请发布一个,包括所需的输出。谢谢!如果filteredKeyArray中的项比初始重新映射中的嵌套对象多,这有关系吗?例如
filteredKeyArray=['object_name1','object_name2']
{“奇怪的对象”:{“object_name1”:{…}
我个人会映射到对象上,并使用映射迭代器获得相关的filteredKeyArray(如方法1)。例如,您可以将该映射返回对象键替换为[filteredKeyArray[I]| |“unnamed']如果未定义,您将获得默认值(在本例中未命名)作为键,而不是“未定义。快乐狩猎!谢谢!filteredKeyArray中的项是否比初始重新映射中的嵌套对象多重要?例如
filteredKeyArray=['object_name1','object_name2']
{“陌生对象”:{“object_name1”:{…}
我个人会映射到对象上,并使用映射迭代器获取相关的filteredKeyArray(如方法1中所示),例如,您可以将该映射返回对象键替换为[filteredKeyArray[I]| |“unnamed']。这样,如果filteredKeyArray[I]未定义,您将获得默认值(在本例中为unnamed)作为钥匙,而不是“未定义。快乐狩猎!