javascript - 在 JavaScript 中使用对象和数组
问题描述
我有一个对象。说它的数据。
const data = {}
我想要一个功能(让它成为doThis()
)。如果我打电话doThis('student' , 'James')
,那么数据应该是:
data = { student : ['James'] }
如果我再次打电话doThis('student' , 'Peter')
,那么数据应该是:
data = { student : ['James' , 'Peter'] }
如果我打电话doThis('planet' , 'earth')
,那么数据现在应该是:
data = { student : ['James , 'Peter'] , planet: ['earth'] }
现在,如果我再次调用doThis('student' , 'Peter')
,那么应该删除 Peter,因为它已经存在于学生属性中。所以数据应该是:
data = { student : ['James'] , planet : ['earth'] }
PS:我使用以下函数解决了它。忽略useCallback,它只是一个react hook。
解决方案
let data={}
function doThis(key, value){
if(key in data === true){
if(data[key].filter(item =>item === value).length >0){
data[key] = data[key].filter(item =>item !== value)
}else{
data[key] = [...data[key], value]
}
}else{
data[key] = [ value]
}
return data
}
console.log(doThis("student", "Murangaza"))
console.log(doThis("country", "RDC"))
console.log(doThis("student", "Hans"))
推荐阅读
- python - 带有 CherryPy 的 Django - ModuleNotFound 错误
- angular - 使用 @ngtools/webpack 在 Angular 11 + Webpack 4 中实现 AOT
- angular - 隐藏在 kendo kendo-sortable angular 中拖动时的弹出窗口
- java - 当用户完成验证码时,如何让 selenium 检测到?
- mysql - MYSQL JOIN 和 SUM - 我做错了什么?
- python - 如何以编程方式将excel工作表复制到新的工作表
- javascript - 如何将 ondragstart="drag(event)" 添加到动态创建的元素 (li)?
- laravel - Laravel Eloquent Postgresql Select with Case,然后按 Case 结果过滤
- python-3.x - 使用 Flask-restful 创建 GET 函数但出现以下错误:[requests.exceptions.SSLError] [SSL: WRONG_VERSION_NUMBER]
- python - Jupyter notebook 中扩展的 mnist 数据集