【问题标题】:Filter out object section that the button is attached to过滤掉按钮附加到的对象部分
【发布时间】:2021-05-04 23:20:56
【问题描述】:

我无法过滤出数组中的对象。在整个数组上单击一个按钮时我拥有的代码被过滤。我想在我点击的地方,从数组中删除该对象。我已经尝试了拼接和过滤方法,但我最终得到了相同的结果,因为整个数组被删除而不是那个项目。我怎样才能只定位那一项?

function removeItem(btns, id) {

    btns.forEach(btn => {
        btn.addEventListener('click', (e) => {

            let newArr = shoppingList.filter((item, i) => {
                return item.id !== item.id
            })

            shoppingList = newArr
            cartMenuItems.innerHTML = newArr
            cartItemCount.innerText = newArr.length
            return newArr
        })
    })
}

【问题讨论】:

  • 您将item.id 与自身进行比较,并且由于它们永远不会相等,因此它总是返回false。我假设您实际上想将 button.id(或其他相关属性)与 item.id 进行比较。
  • @pilchard 嗨,pilchard。如果我将它与其他东西进行比较,它仍然会做同样的事情。它删除整个数组或返回原始数组。

标签: javascript html arrays filter


【解决方案1】:

你应该从点击事件中获取元素的 id,接下来可能会使用 map() 获取新数组

let element = e.target //for example
let newArr = shoppingList.map((item, i) => {
            if (item.id === element.id) continue
            return item
        })

它的代码返回所有数组并从页面中止您的元素

【讨论】:

    猜你喜欢
    • 2019-09-01
    • 2018-04-21
    • 2014-08-29
    • 1970-01-01
    • 2022-10-05
    • 2015-09-03
    • 2018-09-28
    • 2017-11-10
    • 2021-10-09
    相关资源
    最近更新 更多