Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于值将数组拆分为其他数组_Javascript_Arrays - Fatal编程技术网

Javascript 基于值将数组拆分为其他数组

Javascript 基于值将数组拆分为其他数组,javascript,arrays,Javascript,Arrays,您好,我有一组数据,如下所示(它包含列表编号和品牌名称): [“1_苏菲•格雷”、“2_大西洋湾”、“2_特质”、“3_塔米”、“3_翻转”、“3_鸭子•道奇”、“3_班比尼”、“4_贝利西马”] 我需要做的是将这些分开,并为每个列表创建一个ul(1个是女装,2个是男装,3个是童装等等)。我认为最好的方法是循环遍历这个数组,并根据列表编号将这些值分成不同的数组,例如 [“1_Sophie_Gray”] [“2大西洋湾”、“2特质”] [“三个塔米”、“三个翻转”、“三个鸭子”] 我想这样做的原因

您好,我有一组数据,如下所示(它包含列表编号和品牌名称):

[“1_苏菲•格雷”、“2_大西洋湾”、“2_特质”、“3_塔米”、“3_翻转”、“3_鸭子•道奇”、“3_班比尼”、“4_贝利西马”]

我需要做的是将这些分开,并为每个列表创建一个ul(1个是女装,2个是男装,3个是童装等等)。我认为最好的方法是循环遍历这个数组,并根据列表编号将这些值分成不同的数组,例如

[“1_Sophie_Gray”]

[“2大西洋湾”、“2特质”]

[“三个塔米”、“三个翻转”、“三个鸭子”]

我想这样做的原因是为每个新阵列构建一个单独的图标列表。所以最终我会得出这样的结论:

<div class="store_brands">
<p id="brand_intro">
    Brands and departments available in this store:
</p>
<h4>list 1</h4>
<ul>
    <li>
        <img src="/images/v3/brand_logos/wallis.gif" alt="list 1 brands" />
    </li>
</ul>
<h4>list 2</h4>
<ul>
    <li>
        <img src="/images/v3/brand_logos/atlantic_bay.gif" alt="list 2 brands" />
    </li>
    <li>
        <img src="/images/v3/brand_logos/trait.gif" alt="list 2 brands" />
    </li>
</ul>
<h4>list 3</h4>
<ul>
    <li>
        <img src="/images/v3/brand_logos/tammy.gif" alt="list 3 brands" />
    </li>
    <li>
        <img src="/images/v3/brand_logos/flipback.gif" alt="list 3 brands" />
    </li>
    <li>
        <img src="/images/v3/brand_logos/duck_dodge.gif" alt="list 3 brands" />
    </li>
</ul>

本店提供的品牌和部门:

清单1
清单2
清单3

这是我的密码:

function inStoreBrands (storeData) {

var brandsArr = [],
    listNum,
    fileName,
    brandImgsPath = "/images/v3/brand_logos/",      
    brandList = '<div class="store_brands"><p id="brand_intro">Brands and departments available in this store:</p>',
    brandResults = storeData.brands,
    brands = brandResults.split(", "),
    listCount = 1,
    titleText = "list 1";

        for (var i=0; i<brands.length; i++) {
            listNum = brands[i].split(/_(.+)/)[0];
            listNum = parseInt(listNum);

            fileName = brands[i].split(/_(.+)/)[1];
            fileName = fileName.toString().toLowerCase();

            function addToArray () {
                brandsArr.push(brandImgsPath + fileName + '.gif');
            }

            if(listNum !== listCount){
                buildBrandList(brandsArr, titleText);
                titleText = "list " + listNum;
                addToArray();
            } else {
                addToArray();
            }
        }

function buildBrandList(brandsArr, titleText) {
    brandList += '<h4>'+titleText+'</h4>';
    brandList += '<ul>';
    for (i=0; i < brandsArr.length; i++) {
        brandList += '<li><img src="'+brandsArr[i]+'" alt="'+titleText+' brands" /></li>';
    }
    brandList += '</ul>';
    brandsArr = [];
    listCount++;
}

brandList += '</div>';      
return brandList;               
};
功能inStoreBrands(storeData){
var brandsArr=[],
listNum,
文件名,
BrandimgPath=“/images/v3/brand_logos/”,
brandList='

本店提供的品牌和部门:

, brandResults=storeData.brands, brands=brandResults.split(“,”), listCount=1, titleText=“列表1”;
对于(var i=0;i您没有发布StureDATA的确切数据以及如何构建它),所以我做了一些假设:

< P>一个简单的设计更改可能会帮助您。考虑改变您创建品牌数组的格式。例如,代替存储1O-SopieGeGy,考虑1SopieGey。

var arr1;
var arr2;
//etc

for(i=0;i<brands.length - 1; i++){ //So we've split 1_Sophie-Gray from everything else
   var tmpArr = brands[i].split('_');
   if(tmpArr[0] == 1){             //parse to the correct array
      arr1.push("brands[i]");      //push into the appropriate array
   } else if(tmpArr[0] == 2) {
      arr2.push("brands[i]");
   }
}
请注意,您可以完全从.vb代码中添加、删除和修改此数组。然后,一旦它到达您想要的位置,您可以将其扔到负责创建客户端javascript的代码隐藏函数中

Public Function ModifyJS(ByVal PassedArr As String) As String
   Dim str As String = ""
   str = "<script type='text/javascript' language='javascript'>function ClickSubmit(){var btn = '" & btnSubmit.ClientID & "'; btn = getElementSomehow(btn); btn.click()};" & _
   " <all your javascript> " & _
   " var JSarr = [" & PassedArr & "]; " & _
   " //Im using & _ to make things more readable once the js gets created" & _
   " </script>"
   return str
End Function
公共函数ModifyJS(ByVal PassedArr作为字符串)作为字符串
Dim str As String=“”
str=“function ClickSubmit(){var btn='”&btnSubmit.ClientID&“;btn=getelement(btn);btn.click()};”和_
"  " & _
“var JSarr=[”&PassedArr&“];”&_
“//一旦js被创建,我将使用&u使内容更具可读性”&_
" "
返回str
端函数
而且…到这里也不是一个巨大的飞跃:

Public Function ModifyJS(ByVal PassedArr As String, ByVal NoArrays As Integer) As String
   Dim str As String = ""
   str = "<script type='text/javascript' language='javascript'>function ClickSubmit(){var btn = '" & btnSubmit.ClientID & "'; btn = getElementSomehow(btn); btn.click()};" & _
   " <all your javascript> " & _
   " var JSarr = [" & PassedArr & "]; " & _
   For i As Integer = 0 To NoArrays
      str &= " var arr" & i & "=[];"
   Next
   " //Im using & _ to make things more readable once the js gets created" & _
   " </script>"
   return str
End Function
公共函数ModifyJS(ByVal PassedArr作为字符串,ByVal NoArrays作为整数)作为字符串
Dim str As String=“”
str=“function ClickSubmit(){var btn='”&btnSubmit.ClientID&“;btn=getelement(btn);btn.click()};”和_
"  " & _
“var JSarr=[”&PassedArr&“];”&_
对于i,整数=0到无阵列
str&=“var arr”&i&“=[];”
下一个
“//一旦js被创建,我将使用&u使内容更具可读性”&_
" "
返回str
端函数
希望这对兄弟有帮助


-sf

什么东西在你的代码中特别不起作用?似乎你的想法是正确的,试着准确地识别代码或逻辑中有什么东西被破坏了,并缩短你的问题,把重点放在这一点上。嗨,Maerics,我刚刚读了回来,你是对的,它可以解释得更好。我遇到的问题是用列表过滤任何东西m从brands数组中取1,并将其存储在自己的数组中,然后将其传递给buildBrandList函数并为其创建html。然后,我想将brandsArr设置为空,并对listNum为2的任何对象设置为相同的值,以此类推。嗨,Mike,你对storeData的假设是正确的。正如你所看到的,html输出没有与传入的数据不匹配。因此,列表2应该只有2项,列表3应该只有4项,而列表4甚至还没有创建。有什么想法我错在哪里吗?嗨,sacredfaith,我已经用你的建议解决了这个问题(不知道为什么js小提琴不起作用,但你得到了jist)。但是我的问题是,我希望它是动态的,因为我并不总是知道要创建5个列表。我知道这要求很多,但是有没有办法动态创建arr1、arr2变量,并在循环中为每个数组调用buildBrandList函数?谢谢
Public Function ModifyJS(ByVal PassedArr As String) As String
   Dim str As String = ""
   str = "<script type='text/javascript' language='javascript'>function ClickSubmit(){var btn = '" & btnSubmit.ClientID & "'; btn = getElementSomehow(btn); btn.click()};" & _
   " <all your javascript> " & _
   " var JSarr = [" & PassedArr & "]; " & _
   " //Im using & _ to make things more readable once the js gets created" & _
   " </script>"
   return str
End Function
Public Function ModifyJS(ByVal PassedArr As String, ByVal NoArrays As Integer) As String
   Dim str As String = ""
   str = "<script type='text/javascript' language='javascript'>function ClickSubmit(){var btn = '" & btnSubmit.ClientID & "'; btn = getElementSomehow(btn); btn.click()};" & _
   " <all your javascript> " & _
   " var JSarr = [" & PassedArr & "]; " & _
   For i As Integer = 0 To NoArrays
      str &= " var arr" & i & "=[];"
   Next
   " //Im using & _ to make things more readable once the js gets created" & _
   " </script>"
   return str
End Function