首页 > 解决方案 > 无论如何要在仅用对象构造的对象变量中添加许多对象?

问题描述

我想在仅使用对象构造的变量中添加多个对象。语言(Javascript)。示例: var x = {"a": {}, "b": {"name": "Hello World"}};

我正在尝试为 xa 添加多个对象,但是当我在 xa 中添加多个对象并且当我请求已添加到 xa 的这些对象的某些值时,控制台返回未定义。我想知道是否可以在不使用数组的情况下添加多个对象。

var x = {"a": {}, "b": {"name": "Hello World"}};
x.a = {"name": "Paradox"};
x.a += {"first", "Hello"};
x.a += Object.assign({"second", "World"});
console.log(x.a.first);// Returns undefined

当放置 console.log(xafirst) 它返回未定义。我知道使用数组我会得到我想要的结果,那就是“你好”。但我想知道我是否可以在不使用数组的情况下添加许多对象并获得相同的结果。

标签: javascriptobjectjavascript-objects

解决方案


您当前的逻辑将不起作用,因为+=用于连接,您不能连接对象,甚至是这样的数组。

您可以使用许多选项来做您想做的事,我将向您展示其中的两个:

首先x.a作为一个对象(你已经拥有)使用,你可以在运行时创建一个键并为其赋值,然后访问 xa["keyName"] 将返回该值,例如:x.a["first"]将返回“Hello”。

var x = {
  "a": {},
  "b": {
    "name": "Hello World"
  }
};

x.a["name"] = "Paradox";
x.a["first"] = "Hello";

console.log(x.a)
console.log(x.a.first);

第二x.a用作对象数组。您创建一个带有键/值的对象并插入到这个数组中,但是,要找到一个值,您需要遍历数组,有很多方法可以做到这一点,我在这里使用find(),检查代码以获得更好的理解.

var x = {
  "a": [],
  "b": {
    "name": "Hello World"
  }
};

x.a.push({"name": "Paradox"});
x.a.push({"first": "Hello"});

console.log(x.a.find(y => y["first"]))


推荐阅读