gpt4 book ai didi

javascript - 从一串值创建二维对象

转载 作者:行者123 更新时间:2023-11-29 15:23:30 25 4
gpt4 key购买 nike

在 JavaScript 中,我如何从一串值创建一个二维对象,其中第一个值是名称,最后一个是内容,中间的所有其他值是属性?

例如,我有一个字符串"capitals,Asia,China,Beijing",我希望代码将这个字符串分成四个值并创建一个对象capitals["Asia""中国"] = "北京";.

我该怎么做?

完整的代码片段如下所示:

<script>
Values = "capitals,Asia,China,Beijing";
Values = Values.split(",");
alert(capitals["Asia","China"]);
</script>

我希望警告框显示单词 Beijing

我该怎么做?

最佳答案

JavaScript 没有二维数组或对象,您可以使用 array[index1, index2] 访问某些其他语言。为此,您必须使用嵌套对象/数组,例如

capitals["Asian"]["China"]

要创建这些,您可以执行以下操作:

function makeEntry(obj, str) {
const parts = str.split(','); // array of comma-delimited values
const value = parts.pop(); // final value ("Beijing")
const final = parts.pop(); // final property ("China")

// Find nested property, creating empty object if not there.
for (let i = 0; i < parts.length; i++) {
const part = parts[i];
if (!(parts in obj)) obj[part] = {};
obj = obj[part];
}

// Set final value.
obj[final] = value;
}

const data = {};
makeEntry(data, "capitals,Asian,China,Beijing");
console.log(data);
console.log(data.capitals["Asian"]["China"]);

即使有更多级别,例如"capitals,Asia,East Asia,China,Beijing",此代码也能正常工作。

请注意,在给定名称的情况下,无法在 JS 中创建变量。因此,我们提供一个初始对象,并在其中构建嵌套结构。

另一种方法

另一种方法是使用"capitals,Asian,China" 等键创建单级对象。这更容易创建,但访问起来可能更不方便。例如,没有简单的方法可以找到所有的亚洲首都。下面,我使用正则表达式将输入分成第一部分和最终值。

function makeEntry(obj, str) {
const [, key, value] = str.match(/(.*),([^,]+)$/);
obj[key] = value;
}

const data = {};
makeEntry(data, "capitals,Asian,China,Beijing");
console.log(data);
console.log(data["capitals,Asian,China"]);

关于javascript - 从一串值创建二维对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41390212/

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