javascript - 附加除指定变量之外的整个数组

标签 javascript arrays

感谢您检查我的问题。

我试图在页面上将以下数组显示为无序列表:

var answers = ["cat", "dog", "horse", "hamster", "duck"]

但是,如果这个数组中有这个变量:

var x = $('#my-input').val()

我希望将其从显示的数组中删除。也就是说,如果用户在输入中键入“duck”,我不希望“duck”出现在页面上显示的数组项中。我希望我说得清楚。

这是我用来将数组显示到页面上的js代码:

$("#button").click(function(e){

    var answers = ["cat", "dog", "horse", "hamster", "duck"]
    var x = $('#my-input').val()

    if(jQuery.inArray(x, answers) !== -1) {
        $('#my-div').append(answers);
    }

});

正如你所看到的,我正在努力解决两件事:

1) 将数组附加为无序列表的元素(我正在寻找比手动输入更好的解决方案:$('#my-div').append("<ul> + <li> + answers[0] + </li> + </ul>") 对于所有项目。

2) 从数组中删除一项,即输入的值。

再次感谢!

最佳答案

过滤现有数组:

const val = $('#my-input').val()
const newArray = answers.filter(a => a != val) 

至于附加,你的方法没问题。您可以按照此处所述使用 documentFragment https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment#Example

var list = document.querySelector('#list')
var fruits = ['Apple', 'Orange', 'Banana', 'Melon']

var fragment = new DocumentFragment()

fruits.forEach(function (fruit) {
  var li = document.createElement('li')
  li.innerHTML = fruit
  fragment.appendChild(li)
})

list.appendChild(fragment)

它有一些优点,例如你的 dom 会立即更新,因此回流只会发生 1 次。

但这与您对附加所做的操作相同(请参阅 this answer )

关于javascript - 附加除指定变量之外的整个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60728626/

相关文章:

python - 在 python 中创建一个没有 aubarrays 作为参数传递的子数组

java - java中的ArrayList和方法

javascript - 检查类是否添加到元素中

javascript - 通过 Ajax/JSON 创建滑动的下一个/上一个内容

javascript - 如何在 JavaScript 中创建一个类?

javascript - 为 D3 树布局嵌套 CSV

javascript - 来自一个页面的 Ajax 请求和在另一页面中的响应

arrays - 更新状态数组中的一个值 react 原生

PHP 扩展函数 array_init 抛出 'return_value is undeclared'

javascript - JavaScript 中的 JSON 行提取问题