设置一个可变长度的二维数组
Setting up a variable length two-dimensional array
我有一个字符串如下:黑豹^粉色、绿色、黄色狗| ^热,最高
这个字符串意味着我有两个主要块(由'|'分隔):《黑豹》和《狗》在这两个主要块下面,我有,比方说"subcategories"
我想创建一个二维数组,用逻辑表示如下:
Panther(Array 1) => Pink(Element 1),Green(Element 2), Yellow(Element 3)Dog(Array 2) => Hot(Element 1), Top(Element 2)
同时,我希望能够添加一个主块,比如"猫",可能的类别为"可爱,骄傲"到二维数组
我已经设法得到一个数组包含"豹^粉红,绿色,黄色"answers"狗^热,顶部"通过使用JavaScript的分裂函数。
请注意,该字符串是通过Ajax接收的,可以是任意长度,但总是使用上面所示的格式。
----------------------------- 编辑 ----------------------------
好的,到目前为止我的脚本是:
$(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"并没有"警告"任何东西。我做错了什么?
对我来说你的数据最合乎逻辑的表示:
Panther^Pink,Green,Yellow|Dog^Hot,Top
是一个JavaScript对象,每个类别都有一个属性,每个类别是一个包含子类别的数组:
var data = {
Panther : ["Pink", "Green", "Yellow"],
Dog : ["Hot", "Top"]
}
你可以这样访问它,例如,data["Dog"][1]
(给出"Top")。
如果你可以接受这种格式,那么你可以这样解析它:
function parseData(data) {
var result = {},
i,
categories = data.split("|"),
subcategories;
for (i = 0; i < categories.length; i++) {
subcategories = categories[i].split("^");
result[subcategories[0]] = subcategories[1].split(",");
}
return result;
}
var str = "Panther^Pink,Green,Yellow|Dog^Hot,Top";
var data = parseData(str);
假设您正在尝试将数据解析为如下内容:
var result = {
Panther: ["Pink", "Green", "Yellow"],
Dog: ["Hot", "Top"]
}
您可以使用string.split()
将字符串分解为子数组:
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(",");
}
数据可以像这样添加到数据结构中:
result["Cat"] = ["Cute", "Proud"];
可以像这样从数据结构中读取数据:
var dogItems = result["Dog"]; // gives you an array ["Hot", "Top"]
你可以这样写:
function parseInput(_input) {
var output = [];
var parts = _input.split('|');
var part;
for(var i=0; i<parts.length; i++) {
part = parts[i].split('^');
output[part[0]] = part[1].split(',');
}
return output;
}
调用parseInput('Panther^Pink,Green,Yellow|Dog^Hot,Top');
将返回:
output [
"Panther" => [ "Pink", "Green", "Yellow" ],
"Dog" => [ "Hot", "Top" ]
]
要在列表中添加另一项,可以使用:
output["Cat"] = ["Cute", "Proud"];
- 作为一个二维数组,从ajax接收
- 将一个二维数组传递给javascript中的函数
- Javascript:一个二维数组的字符串
- 将一个外部二维数组映射到另一个二维数组(javascript)
- Javascript使用map从一维数组创建一个二维数组
- 使用Java.lang.reflect.array.newInstance创建一个带有Java反射的二维数组
- 用Javascript创建一个给定宽度和高度的二维数组
- 用javascript从二维数组中选择一个二维数组
- 设置一个可变长度的二维数组
- 循环通过一个数组创建一个二维数组-循环不工作
- 移动一个二维数组
- 有没有一种方法可以将一个元素从二维数组内部移动到数组中的另一个位置,而不移动其他元素?
- 连接一个二维数组
- 将二维数组中的 ID 与另一个二维数组中的 ID 进行比较
- 如何缩进一个二维数组
- 从常规数组创建一个新的二维数组
- 如何从另一个二维数组中提取一个二维数组区域
- 在javascript中创建一个不同长度的自定义二维数组
- 将二维数组的元素复制到另一个二维数组中
- JavaScript:使用第一个“行”将二维数组转换为对象数组来定义属性