如何在不覆盖先前值的情况下为同一个键设置多个值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在不覆盖先前值的情况下为同一个键设置多个值?相关的知识,希望对你有一定的参考价值。
基本上,我希望能够通过将单个键的值放入数组并将其设置为我的主对象以供以后访问,从而为单个键添加多个值。我怎样才能最好地做到这一点?真令人沮丧,我感到沮丧,问自己为什么我曾经以为自己可以做到这一点。
let mainObj =
const func = (str, obj) =>
mainObj[str] = [obj]
func('str1', content: 'content1' )
func('str2', content: 'content2' )
func('str2', content: 'content3' )
console.log(mainObj)
//instead of this:
str1: [ content: 'content1' ],
str2: [ content: 'content3' ]
//I want this:
str1: [ content: 'content1' ],
str2: [ content: 'content2' , content: 'content3' ]
答案
您应该先检查是否已经有带有该字符串键的数组;
[如果是,则将其推送到该数组,而不是将其替换为新数组,
如果不是,则执行您正在做的事情,使用该键创建一个数组
let mainObj =
const func = (str, obj) =>
if (mainObj[str])
mainObj[str].push(obj)
else
mainObj[str] = [obj]
func('str1', content: 'content1' )
func('str2', content: 'content2' )
func('str2', content: 'content3' )
console.log(mainObj)
//instead of this:
另一答案
只需像这样制作一个数组:
const func = (str, obj) =>
mainObj[str] = (mainObj[str] || []).concat([obj])
另一答案
您应该推送到元素上而不是覆盖它。
let mainObj =
const func = (str, obj) =>
if (!mainObj[str])
mainObj[str] = [];
mainObj[str].push(obj);
func('str1',
content: 'content1'
)
func('str2',
content: 'content2'
)
func('str2',
content: 'content3'
)
console.log(mainObj)
以上是关于如何在不覆盖先前值的情况下为同一个键设置多个值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不删除先前相同值的情况下选择具有重复项的列表中的特定数字?
Excel 2010:如何在不修改其输入值的情况下跨多个单元格更改公式?
如何在不影响 SYSTEM/IE 代理的情况下为 Webbrowser Control 设置代理