具有多个值的代码关联 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
以获得有用的信息。
我刚开始在 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
以获得有用的信息。