javascript - 在javascript中将新列表字段添加到对象
问题描述
我正在努力将(将 json 转换为 json 列表)列表添加到 json。这是示例:
config = {
existing_variable: 'example'
}
addToListing = (field, value, index=0) => {
config = {
...config,
listing: {
...config.listing,
[field]: value
}
}
}
addToListing('first', 1, 0)
addToListing('second', 2, 0)
addToListing('first', 3, 1)
console.log(config)
结果:
{
existing_variable: 'example',
listing:
{
first: 3,
second: 2
}
}
预期结果:
{
existing_variable: 'example',
listing:
[
{first: 1, second: 2},
{first: 3}
]
}
我尝试了不同的方法,但我所做的并不合适(例如嵌套值或开始时的完整初始化)。
能否请你帮忙?
解决方案
您可以添加一些检查并倒回数组。
const addToListing = (field, value, index=0) => {
config = {
...config,
listing: Object.assign(
[],
(config.listing || []),
{ [index]: { ...(config.listing?.[index] || []), [field]: value } }
)
}
};
var config = { existing_variable: 'example' };
addToListing('first', 1, 0);
addToListing('second', 2, 0);
addToListing('first', 3, 1);
console.log(config)
.as-console-wrapper { max-height: 100% !important; top: 0; }
没有可选的链接运算符?.
,但具有更多默认值。
const addToListing = (field, value, index=0) => {
config = {
...config,
listing: Object.assign(
[],
(config.listing || []),
{ [index]: { ...((config.listing || [])[index] || []), [field]: value } }
)
}
};
var config = { existing_variable: 'example' };
addToListing('first', 1, 0);
addToListing('second', 2, 0);
addToListing('first', 3, 1);
console.log(config)
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- r - 外连接与 R 中的条件
- sparql - 如何在 SPARQL (Wikidata) 中任意分组值?
- javascript - ReactJS - 从选择下拉列表中的列表中过滤项目
- python - 对包含非 ASCII 字符的字符串进行排序
- bash - 在 MyNewFiles 中搜索文件名包含偶数的所有文件,并将结果作为变量存储在 bash 中
- splunk - Splunk - 如何解析从 Azure blob 摄取的 JSON?
- python - 无法从工件安装软件包
- jquery - 在 Wordpress 后端使用 JQuery DatePicker
- c++ - 未加载 Qt5 MySQL 驱动程序 - Windows
- python - 如何检查文件是否存在并在python中重新提示?