筛选/排序数组

时间:2018-07-23 13:17:46

标签: javascript arrays

spt_curr_A = ["acb|123|N", "bca|234|N", "dcs_abc|134|Y", "abc|432|N", "def_bca|243|Y"]

for (var i = 0; i < spt_curr_A.length; i++){
   sl = spt_curr_A[i].split("|");

   console.log("Split: " + sl);
}

一旦拆分,我只希望将带有“ N”的内容显示为sl。我尝试过几种不走运的方法。

5 个答案:

答案 0 :(得分:5)

数组具有一些方法,这意味着您不必总是手动遍历它们即可从中获取数据。 mapfilter之类的方法返回一个数组,因此可以链接在一起。

以这种方式使用数组可使代码更易于阅读和调整。在下面的示例中,我使用mapfilter来获取仅对我们有用的数据。然后,forEach允许我们迭代其余项目并将其记录到控制台。

如果您想了解有关数组方法的更多信息,this article是一个不错的起点。

您可以对原始代码进行调整以进行类似的检查:

spt_curr_A = ["acb|123|N", "bca|234|N", "dcs_abc|134|Y", "abc|432|N", "def_bca|243|Y"]

for (var i = 0; i < spt_curr_A.length; i++){
   sl = spt_curr_A[i].split("|");
   
   if (sl[2] === 'N') {
    console.log("Split: " + sl);
   }   
}

但是您可能会发现使用mapfilter而不是for循环的代码更容易使用:

spt_curr_A = ["acb|123|N", "bca|234|N", "dcs_abc|134|Y", "abc|432|N", "def_bca|243|Y"]

spt_curr_A
  .map(item => item.split('|'))
  .filter(item => item[2] === 'N')
  .forEach(item => console.log(`Split ${item}`))

答案 1 :(得分:1)

选项1:

遍历数组,最后使用str.endsWidth()检查数组元素是否包含|N。下面是工作代码:

var spt_curr_A = ["acb|123|N", "bca|234|N", "dcs_abc|134|Y", "abc|432|N", "def_bca|243|Y"];

var new_array = [];

for (var i in spt_curr_A) {
  if (spt_curr_A[i].endsWith("|N")) {
    new_array.push(spt_curr_A[i])
  }
}

console.log(new_array);

选项2:

您可以检查索引sl的{​​{1}}数组element中的2是否为N

var spt_curr_A = ["acb|123|N", "bca|234|N", "dcs_abc|134|Y", "abc|432|N", "def_bca|243|Y"]

for (var i = 0; i < spt_curr_A.length; i++) {
  sl = spt_curr_A[i].split("|");
  if (sl[2] === "N") {
    console.log("Split: " + sl);
  }
}

答案 2 :(得分:0)

一种替代方法是使用函数Array.prototype.filter

假设每个元素都有三个部分(两个管道)。

let spt_curr_A = ["acb|123|N", "bca|234|N", "dcs_abc|134|Y", "abc|432|N", "def_bca|243|Y"],
    fn = (s) => s.split("|").pop() === "N",
    filtered = spt_curr_A.filter(fn);

console.log(filtered);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 3 :(得分:0)

关于Array.includes()呢?

spt_curr_A = ["acb|123|N", "bca|234|N", "dcs_abc|134|Y", "abc|432|N", "def_bca|243|Y"]

for (var i = 0; i < spt_curr_A.length; i++){
   sl = spt_curr_A[i].split("|");

    if(sl.includes("N"))
    {
        console.log("Split: " + sl);
    }
}

答案 4 :(得分:0)

首先进行过滤,然后您可以进行任何操作

let spt_curr_A = ["acb|123|N", "bca|234|N", "dcs_abc|134|Y", "abc|432|N", "def_bca|243|Y"]

spt_curr_A = spt_curr_A.filter((str) => {
 return str.indexOf('|N') !== -1
});
spt_curr_A= spt_curr_A.splice("|")
console.log(spt_curr_A)