具有多个值的代码关联 javascript 数组

Code associative javascript array with multiple values

我刚开始在 JavaScript 中使用关联数组。我有点理解它们并不是真正的数组,但它们似乎符合我的目的,即将一些配置数据从记录加载到一些会话范围变量中,这样我就可以很容易地访问它们。

现在我有了一个数据结构,每个键可以有多个值。我无法加载它。

下面是一些伪代码。它通过一个循环运行,加载一个关联数组,这样我将拥有以下内容:

键="App1"值="App1Title1,App1Title2,etc" 键="App2" 值="App2Title1,App2Title2,etc"

最好的方法是什么?

var tmpDes = {};

//Loop through data records
//Load the values below from loop, not hardcoded like here.
var keyStr:String = "key";
var valStr1:String = "value1";
var valStr2:String = "value2";


//This seems to work 
tmpDes[tmpStr] = "xpApp1Title1";
tmpDes[tmpStr] = tmpDes[tmpStr] + "," + tmpStr1;

// 

============================================= ============ 这些都是很好的答案。通过四处搜索,我确实意识到这些并不是真正的关联数组,而是对象,我应该提到这一点。

Dan,问题是我在 table 文档中循环,所以在构建 js 对象时我不知道 valStr1 和 valStr2。我本质上想要的是使用 "push" 但这些并不是真正的数组,所以这是行不通的。

============================================= ======

这更接近,但问题是我不知道文档中的值,而且我不明白如何使数组名称来自变量。

文件中的文档包含这些字段

关键值 App1 App1Title1 App1 App1Title2 App2 App2Title1 App2 App2Title2 等等

我需要创建一个结构,以便在我调用 App1 时可以获得一个列表 ==> "App1Title1":"App1Title2"

所以我创建了我的对象和临时字符串变量,然后开始阅读文档。

从第一个文档加载临时变量。

那我要设置obj。但我想动态地做到这一点。

所以行

obj.tmpKey.push(tmpVal) 

应该执行

obj.App1.push(AppTitle1). 

但显然我是如何编写它的,它不会工作它用 tmpVal 加载 tmpKey

也许我使用了错误的结构?我愿意改变它。

var obj = {};

var tmpKey:String;
var tmpVal:String

//Loop docs, getting values.

tmpKey = doc.getItemValueString("var1");
tmpVal = doc.getItemValueString("var2");

obj.tmpKey.push(tmpVal);

//Loop

这不是关联数组。在 Javascript 中,我们称其为 Object,这是不同的东西,尽管您通常可以像其他语言所说的关联数组、散列或字典一样使用它们。

Object 具有属性(类似于键)。您可以将数组(和其他类型)存储为 Object 属性.

的值
var obj = {};

obj.aThing = [];
obj.anotherThing = [];

obj.aThing.push("foo");
obj.aThing.push("bar");

obj.anotherThing.push("a");
obj.anotherThing.push("b");
obj.anotherThing.push("c");

console.log("aThing", obj.aThing);
console.log("anotherThing", obj.anotherThing);

将产生输出:

aThing [ "foo", "bar" ]
anotherThing [ "a", "b", "c" ]

您提到您需要使 属性 名称来自一个变量,Javascript 也允许这样做。您需要改用 objectName[varName],如本例所示。

var obj = {};

var name1 = "aThing";
var name2 = "anotherThing";

obj[name1] = [];
obj[name2] = [];

obj[name1].push("foo");
obj[name1].push("bar");

obj[name2].push("a");
obj[name2].push("b");
obj[name2].push("c");

console.log(name1, obj[name1]);
console.log(name2, obj[name2]);

这是相同的代码,只是使用变量作为对象键。

最后,您可以直接将字符串用于 属性 个名称。

var obj = {};

obj["aThing"] = [];
obj["anotherThing"] = [];

obj["aThing"].push("foo");
obj["aThing"].push("bar");

obj["anotherThing"].push("a");
obj["anotherThing"].push("b");
obj["anotherThing"].push("c");

console.log("aThing", obj["aThing"]);
console.log("anotherThing", obj["anotherThing"]);

在JavaScript中我们称关联数组Objects,JS中的一切都是Object甚至Functions.

我会 运行 你完成一些事情。

首先,当声明一个 Object 时,这是首选方法。

var obj = {
 key: 'value', //Any object or value can be used here.
}

然后我可以通过各种方式访问​​它。

点符号(首选):

obj.key === 'value' //True

数组符号(当你绝望的时候):

obj['key'] === 'value' //True

当你想要一个打破 JS 变量命名语法的 key 时,经常使用数组表示法,例如:

var headers = {
 'Content-Type': 'application/json'
}

headers['Content-Type'] === 'application/json' //True

或者您正在遍历 Object 个键的数组。

var keys = Object.keys(headers);

keys.forEach(function(key) {
  console.log(headers[key]);
});

您可以使用 Objects 做很多事情,阅读关于此的 MDN Docs 和许多其他 JS Objects 以获得有用的信息。