设置变长二维数组 [英] Setting up a variable length two-dimensional array
问题描述
我有一个字符串如下:黑豹^粉、绿、黄|狗^热、顶
I have a string as follows : Panther^Pink,Green,Yellow|Dog^Hot,Top
此字符串表示我有 2 个主要块(以|"分隔):豹"与狗"在这两个主要块下,我有,可以说是子类别".
This string means I have 2 main blocks(separated by a '|') : "Panther" and "Dog" Under these two main blocks, I have, lets say "subcategories".
我想创建一个二维数组,表示(在逻辑中)如下:
I wanted to create a 2-dimensional array represented (in logic) as follows :
Panther(Array 1) => 粉红色(元素 1)、绿色(元素 2)、黄色(元素 3)Dog(Array 2) => Hot(Element 1), Top(Element 2)
Panther(Array 1) => Pink(Element 1),Green(Element 2), Yellow(Element 3) Dog(Array 2) => Hot(Element 1), Top(Element 2)
另外,我希望能够添加一个主块,让我们说Cat"和可能的类别Cute,Proud"到二维数组
Also,I want to be able to add a main block, lets say "Cat" with possible categories "Cute,Proud" to the two dimensional array
通过使用 JavaScript 的 split 函数,我设法获得了一个包含Panther^Pink,Green,Yellow"和Dog^Hot,Top"的数组.
I've managed to get an Array containing "Panther^Pink,Green,Yellow" and "Dog^Hot,Top" by using JavaScript's split function.
请注意,此字符串是通过 Ajax 接收的,可以是任意长度,但始终使用上面显示的格式.
Note that this string is received via Ajax and can be of any length, though the format shown above is always used.
----------------------------- 编辑 ----------------------------
----------------------------- EDIT ----------------------------
好的,到目前为止我的脚本是:
Ok, my script so far is :
$(document).ready(function(){
appFunc.setNoOfAppBlock('Panther^Pink,Green,Yellow|Dog^Hot,Top');
appFunc.alertPing();
});
var appFunc = (function(stringWithSeper) {
var result = {},
i,
categories = new Array(),
subcategories;
return {
setNoOfAppBlock: function(stringWithSeper){
categories = stringWithSeper.split("|");
for (i = 0; i < categories.length; i++) {
subcategories = categories[i].split("^");
result[subcategories[0]] = subcategories[1].split(",");
}
},
alertPing: function(){
alert(result["Panther"][1]);
}
};
})();
然而,函数alertPing"并没有提醒"任何东西.我做错了什么?
However, the function "alertPing" isn't "alerting" anything.What am am I doing wrong ?
推荐答案
假设您正在尝试将数据解析为如下内容:
Assuming you're trying to parse your data into something like this:
var result = {
Panther: ["Pink", "Green", "Yellow"],
Dog: ["Hot", "Top"]
}
您可以使用 string.split()
将您的字符串分解为子数组:
you can use string.split()
to break up your string into subarrays:
var str = "Panther^Pink,Green,Yellow|Dog^Hot,Top";
var result = {}, temp;
var blocks = str.split("|");
for (var i = 0; i < blocks.length; i++) {
temp = blocks[i].split("^");
result[temp[0]] = temp[1].split(",");
}
然后可以像这样将数据添加到该数据结构中:
Data can then be added to that data structure like this:
result["Cat"] = ["Cute", "Proud"];
可以像这样从该数据结构中读取数据:
Data can be read from that data structure like this:
var dogItems = result["Dog"]; // gives you an array ["Hot", "Top"]
这篇关于设置变长二维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!