javascript - Javascript:如果元素不存在,如何将元素添加到对象
问题描述
Javascript:如果元素不存在,如何将元素添加到对象
我想像处理数组一样填充对象(如果不存在添加到它)
// push : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push
let items = ['aa','xx'];
function newList(item) {
if (items.indexOf(item) === -1) {
items.push(item);
}
return console.log(items)
}
newList('aa');
newList('bb');
newList('aa');
// how i can do the same with this object?
let itemsObj =
[
{id: 'Id AA', name: 'Name AA'},
{id: 'Id BB', name: 'Name BB'},
{id: 'Id CC', name: 'Name CC'},
{id: 'Id DD', name: 'Name DD'},
{id: 'Id EE', name: 'Name EE'},
];
let newItemA = {id: 'Id XX', name: 'Name XX'};
let newItemB = {id: 'Id AA', name: 'Name AA'};
// TODO
解决方案
您可以在“Sets”的帮助下使用“Array.reduce”和“Array.from”来实现这一点
let itemsObj =
[
{id: 'Id AA', name: 'Name AA'},
{id: 'Id BB', name: 'Name BB'},
{id: 'Id CC', name: 'Name CC'},
{id: 'Id DD', name: 'Name DD'},
{id: 'Id EE', name: 'Name EE'},
];
let newItemA = {id: 'Id XX', name: 'Name XX'};
let newItemB = {id: 'Id AA', name: 'Name AA'};
function addItem(item) {
return Array.from(
(itemsObj.concat(item)).reduce((s, d) => s.add(JSON.stringify(d)) , new Set)
, (d) => JSON.parse(d))
}
console.log(addItem(newItemA))
console.log(addItem(newItemB))
推荐阅读
- kubernetes - 如何在 Kubernetes 中创建秘密文件
- angular - Angular 和 Bootstrapstudio bootstrap/css/bootstrap.min.css) 返回了一个 Promise
- mysql - 如果条件显示语法错误,则在内部声明 - MYSQL 触发器
- python - 使用 np python3 拆分数组除以 16
- c# - 将 DocuSign 与 Unit4 集成
- angular - 角度输入未传递布尔值,因为它始终为真
- css - 如何将提交按钮移动到表单下方
- ios - iOS TTS Alex 语音在实际不可用时被视为可用
- python - 尝试使用 pandas 读取 csv 文件时出错
- python - Pandas 中一列中从一个值到另一个值的转换计数