使用javascript删除对象数组中的特定数组
Posted
技术标签:
【中文标题】使用javascript删除对象数组中的特定数组【英文标题】:delete specific array in array of objects with javascript 【发布时间】:2021-11-11 15:26:03 【问题描述】:我正在尝试清理/过滤要以 CSV 格式下载的数组,但我无法完成这项工作... 我这样做是为了捕捉更大的数组以用旧数组制作新数组。
旧数组:
[
Cpf: null,
Nascimento: null,
Sexo: null,
OnlyPerson: false,
IsFinanc: false,
Senha: null,
ConfirmaSenha: null,
Remover: false,
TipoStr: null,
FiltroStr: null,
IdAgenciaLogarComo: 0,
DontHashPass: false,
IsPessoaSimples: false,
IsVisitante: false,
Permited: false,
Id: 21980,
Nome: 'arrozfeijao',
Ativo: true,
Criacao: '2021-08-19T14:09:06.173',
UltimaAlteracao: null,
Email: 'arrozfeijao@gmail.com',
IdAgencia: 1,
IdEndereco: null,
IdPermissao: 4,
Observacoes: null,
Endereco:
Cep: null,
Logradouro: null,
Numero: null,
Complemento: null,
Bairro: null,
Estado: null,
Cidade: null,
,
Parceiro: null,
Contato: [],
Permissao:
Id: 4,
Descricao: 'Cliente',
Pessoa: [],
,
AlterarSenha: [],
Rede: [],
Provider: [],
AlertaPreco: [],
Pedido2: [],
_PageNumber: 0,
PageNumber: 0,
PageSize: 0,
OrderBy: null,
OrderDesc: false,
,
];
清理数组的功能:
for (const [key] of Object.entries(this.oldArray))
let tempObject = ;
for (const [keys, values] of Object.entries(this.oldArray[key]))
if (this.includesArray.includes(keys))
tempObject[keys] = values;
this.newArray[key] = tempObject;
工作正常,我输入“includesArray”只是我需要返回
(ex. includesArray: ["Cpf", "Nascimento", "Sexo", "Id", "Nome", "Ativo", "Criacao", "UltimaAlteracao", "Email", "Observacoes", "Endereco"])
但是 -> "Endereco" 是另一个数组! 如果我显示 “newArray” 它告诉我:
[
"Cpf": null,
"Nascimento": null,
"Sexo": null,
"Id": 21980,
"Nome": "arrozfeijao",
"Ativo": true,
"Criacao": "2021-08-19T14:09:06.173",
"UltimaAlteracao": "2021-08-19T14:09:06.173",
"Email": "arrozfeijao@gmail.com",
"Observacoes": null,
"Endereco":
"Id": 0,
"Cep": null,
"Logradouro": null,
"Numero": null,
"Complemento": null,
"Bairro": null,
"Estado": null,
"Cidade": null
]
我需要让这个数组发生这种情况:
"Cpf": null,
"Nascimento": null,
"Sexo": null,
"Id": 21980,
"Nome": "arrozfeijao",
"Ativo": true,
"Criacao": "2021-08-19T14:09:06.173",
"UltimaAlteracao": "2021-08-19T14:09:06.173",
"Email": "arrozfeijao@gmail.com",
"Observacoes": null,
"Cep": null,
"Logradouro": null,
"Numero": null,
"Complemento": null,
"Bairro": null,
"Estado": null,
"Cidade": null
我需要删除吗?我需要流行音乐()?我需要拼接?然后再推?我真的不知道该怎么办......
【问题讨论】:
在同一个对象中有两个Id
键是没有意义的。这是故意的吗?
其实它不应该存在2个Id
那么,您能否更新帖子以显示没有两个 ID 的正确输出?
完成!我删除了 ID 并发布了 oldArray!
【参考方案1】:
由于您已经声明了一个includes
数组,您不妨为结果对象定义一个构造函数。
这里destructuring 来自每个传递的对象的includedArray
的属性,进一步解构Endereco
属性以隔离不需要的Id
并将其余属性分配给一个参数,以便稍后将spread 放入最终对象。
const input = [ Cpf: null, Nascimento: null, Sexo: null, OnlyPerson: false, IsFinanc: false, Senha: null, ConfirmaSenha: null, Remover: false, TipoStr: null, FiltroStr: null, IdAgenciaLogarComo: 0, DontHashPass: false, IsPessoaSimples: false, IsVisitante: false, Permited: false, Id: 21980, Nome: 'arrozfeijao', Ativo: true, Criacao: '2021-08-19T14:09:06.173', UltimaAlteracao: null, Email: 'arrozfeijao@gmail.com', IdAgencia: 1, IdEndereco: null, IdPermissao: 4, Observacoes: null, Endereco: Id: 0, Cep: null, Logradouro: null, Numero: null, Complemento: null, Bairro: null, Estado: null, Cidade: null, , Parceiro: null, Contato: [], Permissao: Id: 4, Descricao: 'Cliente', Pessoa: [], , AlterarSenha: [], Rede: [], Provider: [], AlertaPreco: [], Pedido2: [], _PageNumber: 0, PageNumber: 0, PageSize: 0, OrderBy: null, OrderDesc: false, , ];
const ResultObject = (
Cpf,
Nascimento,
Sexo,
Id,
Nome,
Ativo,
Criacao,
UltimaAlteracao,
Email,
Observacoes,
Endereco: Id: _Id, ..._Endereco , /* destructure the Id and '...rest' */
) => (
Cpf,
Nascimento,
Sexo,
Id,
Nome,
Ativo,
Criacao,
UltimaAlteracao,
Email,
Observacoes,
..._Endereco, /* spread the properties of the 'Endereco' object */
);
const result = input.map(ResultObject);
console.log(result);
.as-console-wrapper max-height: 100% !important; top: 0;
【讨论】:
【参考方案2】:你可以试试这个:
const arr = [
"Cpf": null,
"Nascimento": null,
"Sexo": null,
"Id": 21980,
"Nome": "arrozfeijao",
"Ativo": true,
"Criacao": "2021-08-19T14:09:06.173",
"UltimaAlteracao": "2021-08-19T14:09:06.173",
"Email": "arrozfeijao@gmail.com",
"Observacoes": null,
"Endereco":
"Id": 0,
"Cep": null,
"Logradouro": null,
"Numero": null,
"Complemento": null,
"Bairro": null,
"Estado": null,
"Cidade": null
]
const res =
const obj = arr[0]
for(const el in obj)
if(el === 'Endereco')
for(const e in obj[el])
if (e !== 'Id') res[e] = el[e] || null
else
res[el] = obj[el]
console.log(res)
【讨论】:
它不能正常工作,你需要记住它是一个表格,每个复选框都包含一个新数组:c以上是关于使用javascript删除对象数组中的特定数组的主要内容,如果未能解决你的问题,请参考以下文章
使用 jquery 表中的复选框从数组中删除 JavaScript 对象
当数组达到特定长度时删除javascript数组的最后一个元素
如何从javascript或jquery中的元素数组中删除特定元素