设置变长二维数组 [英] Setting up a variable length two-dimensional array

查看:63
本文介绍了设置变长二维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个字符串如下:黑豹^粉、绿、黄|狗^热、顶

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆