Javascript 如何修复Array.filter使其按预期工作?

Javascript 如何修复Array.filter使其按预期工作?,javascript,Javascript,我试图从数组中筛选出一些项,但没有筛选出任何项。我检查了调试器并验证了第二个过滤器中的回调函数对于某些项返回false,但它们仍然没有被过滤掉。第一个筛选器中的回调也按预期工作 this.datArr.filter(section=>section[0]==="foo")[0]. filter(row=>+row[6].split("__")[1] !== activeItemToDelete) 请注意,第一个过滤器后面的[0]用于展平结果 对于某些

我试图从数组中筛选出一些项,但没有筛选出任何项。我检查了调试器并验证了第二个过滤器中的回调函数对于某些项返回false,但它们仍然没有被过滤掉。第一个筛选器中的回调也按预期工作

this.datArr.filter(section=>section[0]==="foo")[0].
                filter(row=>+row[6].split("__")[1] !== activeItemToDelete)
请注意,第一个过滤器后面的[0]用于展平结果


对于某些条目,第[6]行将包含Email__1,因此拆分调用将生成值1,而activeItemToDelete也有值1,因此包含Email__1的行在回调中应生成false。我验证了它们确实为Email__1生成了false值,但这些项仍然没有被过滤掉。我认为可以将两个过滤器链接起来,但我是否遗漏了什么?

传递给函数的部分是数组的占位符。它表示数组的元素

section[0] decleration is wrong.

let arr = [1,2];
//arr[0] will give you 1;

//but in your case your are trying to access arr[0][0]

[1,2].filter( section => {
    //here first value for section will be 1 
    // do whatever you need in here by using the keyword section not section[0]
});

把这归因于严重的睡眠剥夺。事实证明,过滤器工作正常,但我认为至少对我来说,这里还有一个非常重要的学习经验,我希望我的失误能帮助其他人

我最终所做的相当于以下几点:

>> foo=[1,2,3]
//foo.length = 3
>> foo["blah"] = 4
//foo:
//0: 1
//1: 2
//2: 3
//blah: 4
>> foo.length
// 3
// [Note: foo.length is still 3! I would have thought it now should be 4 after adding "blah"].

所以在我最初的帖子中,我以为我是在用过滤器的结果替换这个.datArr[2],但实际上,我实际上是在用过滤器的结果替换这个.datArr[blah]。因此,this.datArr[2]保持不变,这导致我错误地认为筛选器不工作,this.datArr.length保持不变,因此起初我不知道我将筛选器结果分配给this.datArr中的错误新条目

+行[6]。拆分[1]!==activeItemToDelete为什么+?您还可以提供示例输入吗?当我们不知道数据的形状时,很难从对具有特定形状的数据进行操作的逻辑中看出可能出现的错误。另外,您是否使用了.filter的结果?该方法返回一个新数组,但没有进行适当的筛选。oneArray[0]不会展平结果,而是返回数组的第一项,而没有看到dataArr看起来像什么,没有什么需要解决的问题。