检查数组中是否存在项,并从该数组中删除该特定项
Check if an item exist in array and remove that particular item from that array
我有一个组件来显示标签列表,用户可以选择要跟随的标签。因此,当用户单击标记时,我希望将其存储在标记SelectedList中,并添加一个新的类名selected_tag。但是,如果标记已存在于标记SelectedList中,请从标签SelectedList中删除该标记,并删除类名selected_tag。
我很困惑如何检查标签对象是否存在于tagSelectedList中,并从列表中删除该特定的标签项。我该怎么做?我们将非常感谢您的帮助和指导。非常感谢。
component.js:
let tags = [
{id: "1", tagName: "Arts"},
...
...
{id: "59", tagName: "Writing"}
];
var tagsSelectedList = [];
export default class SignUpSubscribeTags extends React.Component {
constructor(props){
super(props);
}
selectTag = (e) => {
// if the tag is not present in the tagsSelectedList then add the tag in the tagsSelectedList also add the tag_selected class name
var isTagPresent = tagsSelectedList.filter(function(item) {
return item.id === e.target.dataset.pk
});
if(isTagPresent) {
console.log(e.target.dataset.pk, 'present in tagsSelectedList');
}
else {
console.log(e.target.dataset.pk, 'not present in tagsSelectedList');
}
// if the tag is present in tagsSelectedList then remove the tag object from the tagsSelectedList also remove the tag_selected class name
}
render() {
let tagList = tags.map((Tag) => {
return (
<li id={Tag.tagName} class="tag" data-pk={ Tag.id } key={Tag.id} onClick={this.selectTag}>{Tag.tagName}</li>
);
});
return(
<div id="signup-process-wrapper-addTags">
<div id="add_tags">
<ul id="tag_list">
{tagList}
</ul>
</div>
</div>
);
}
}
您可以通过以下方式检查标签列表是否包含项目:
if (e.target.className.indexOf("tag_selected") > -1) {}
或
var isTagPresent = tagsSelectedList.filter(function(item) {
return item.id === e.target.key
});
if(isTagPresent.length) {}
您可以通过以下方式删除类:
e.target.className.replace("tag_selected", "");
您可以通过删除项目
tagsSelectedList = tagsSelectedList.filter(function(item) {
return item.id !== e.target.key
})
既然您正在使用React,为什么不创建一个自动添加/删除类的表达式呢。
将变量添加到状态并基于值切换类。
export default class SignUpSubscribeTags extends React.Component {
constructor(props){
super(props);
this.state = {
isSelected: false
}
}
selectTag = (e) => {
this.setState({
isSelected: !this.state.isSelected
})
}
render() {
let tagList = tags.map((Tag) => {
return (
<li
id={Tag.tagName}
class="tag"
className={this.state.isSelected? ' tag_selected ' : null}
key={Tag.id}
onClick={this.selectTag}>
{Tag.tagName}
</li>
);
});
return(
<div id="signup-process-wrapper-addTags">
<div id="add_tags">
<ul id="tag_list">
{tagList}
</ul>
</div>
</div>
);
}
}
相关文章:
- 从组件状态的数组中删除元素
- Mongoose-在更新中删除数组元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 添加和删除隐藏字段数组中的值,而不提交表单
- 从数组中删除重复条目,并在javascript中按顺序排列
- 一些元素没有从数组中删除
- 删除JS数组中的最小数字
- 从数组中删除三元组项
- 删除重复的数组值,然后存储它们[反应]
- 在特定索引处剥离/删除数组中的值
- 数组删除重复结果Javascript
- 字符串替换或通过数组删除
- js中的对象数组:删除重复项
- KnockoutJS.Mapping.FromJS-可观察数组-删除不起作用
- 用于垃圾收集的Javascript数组删除
- 为什么”——数组.删除数组的最后一个元素
- PHP循环通过脚本数组&删除项目
- 谷歌地图API:试图使用数组删除多个标记
- 带有for循环+条件的Javascript数组删除不必要的元素
- 在JavaScript中管理像ArrayList这样的数组:删除一个元素并关闭创建的间隙