繁体   English   中英

使用拼接提取嵌套数组

[英]Using splice to extract nested array

我正在尝试使用splice来提取嵌套数组。 我得到的是所需大小的数组,每个元素undefined

  var testCurrProds = [ 'Prod1', 'prduct1', 'Prod1'] var testCurrProds1 = [ 'Prod2', 'prduct2', 'Prod2', 'Prod2', "Prod9"] var testCurrProds2 = [ 'Prod3', 'prduct3', 'Prod3', 'Prod3', "Prod9"] var testCurrProds3 = [ 'Prod4', 'prduct4', 'Prod4', 'Prod4', "Prod9", "Prod9", "Prod98"] var testString = [1, 'tName1', 4, 69, 'Haircare', "T1", "false", "false", testCurrProds] var testString1 = [2, 'tName2', 1, 69, 'Skincare', "T1", "false", "true", testCurrProds1] var testString2 = [3, 'tName3', 3, 69, 'Haircare', "T1", "true", "true", testCurrProds2] var testString3 = [4, 'tName4', 5, 69, 'Skincare', "T1", "true", "false", testCurrProds3] var testPackages = [testString, testString1, testString2, testString3]; var currPackage = popArray(testPackages, 1, 'tName1'); console.log(currPackage); function popArray(x, findID, findName) { //return array containing submitted ID for (var k = 0; k < x.length; k++ ) { //console.log(x[k]); if((x[k][0]==findID) & (x[k][1]==findName)) { //var temp = x.splice(k,1) //console.log(temp); return x.splice(k,1); } } } 

可以在这里使用数组推导,我认为它比迭代方法更易于理解,并且不易出错。

function popArray(arrayOfArrays, findID, findName) {
    const index = arrayOfArrays.findIndex(a => a[0] == findID && a[1] == findName);
    return index !== -1 && arrayOfArrays.splice(index, 1)[0];
}

基本上,这只是使用内置的findIndex函数来找到匹配项,然后将其从数组中拼接出来并返回它。

在分析了代码之后,我没有发现逻辑和代码有任何问题,只是您将单个“&”符号用于“和”逻辑条件。

function popArray(x, findID, findName)
{
  //return array containing submitted ID 
  for (var k = 0; k < x.length; k++ )
   {
    //console.log(x[k]);  
    if((x[k][0]==findID) && (x[k][1]==findName))
    {
        var temp = x.splice(k,1)
        console.log(temp);
        //return x.splice(k,1);
    }
  }
}

看到这个附件的图像。 我运行了这段代码并获得了预期的输出。 http://prntscr.com/m0baai

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM