javascript - 追加除指定变量外的整个数组
问题描述
感谢您检查我的问题。
我正在尝试将以下数组显示为页面上的无序列表:
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 次。
但这与您使用 append 所做的相同(请参阅此答案)
推荐阅读
- python - 在 python 中混合两个图像以不丢失强度
- java - 如果标签的内容包含>或<,你将如何在java中解析xml?
- firebase - 如何在 Flutter 中从 Firestore 获取错误
- airflow - 新的 DAG 没有赶上错过的时间表(schedule_interval 是一个 cron)
- state - 有人可以为我提供一些技巧,告诉我如何在 Flink 中实现给定的分布式流算法吗?
- r - RStudio 在粘贴到 IDE 时截断长字符串 - 解决方法?
- c# - 在列表框中逐行读取文件
- javascript - 有没有办法以字符串开头的对象的所有属性
- visual-foxpro - 与旧服务器 2003 SMBv1 共享相比,Debian 10 上的 SAMBA 共享慢
- javascript - 具有多个 yAxis 刻度的 Chart.js 步长