如何在JavaScript对象中增加值?

如何在JavaScript对象中增加值?,javascript,Javascript,我怎么能 如果对象中尚不存在键,则指定值1 如果存在,则将该值增加1 我能做得更好吗 var map = {}; map[key] = value; 在这里,您可以最小化您的代码 if (map[key] == null) map[key] = 0; map[key] = map[key]++; 最好将数组的值转换为整数并递增。它将是健壮的代码。 默认情况下,数组的值为string。所以,若不将其转换为整数,则可能无法跨浏览器工作 map[key] = (map[key]+1) || 1

我怎么能

  • 如果对象中尚不存在键,则指定值1
  • 如果存在,则将该值增加1
我能做得更好吗

var map = {};
map[key] = value;

在这里,您可以最小化您的代码

if (map[key] == null) map[key] = 0;
map[key] = map[key]++;

最好将数组的值转换为整数并递增。它将是健壮的代码。 默认情况下,数组的值为string。所以,若不将其转换为整数,则可能无法跨浏览器工作

map[key] = (map[key]+1) || 1 ;

您可以检查对象是否没有特定的关键点,然后将其设置或将现有的关键点值增加1:

功能分配键(obj,键){
obj[键]的类型=='未定义'?obj[键]=1:obj[键]+;
}
var-map={};
分配密钥(map,2);
分配密钥(map,2);
分配钥匙(地图,4);
分配密钥(map,1);
分配密钥(map,2);
分配钥匙(地图,5);
分配密钥(map,1);

控制台日志(map)ES6为地图提供了一个专用类。您可以轻松地对其进行扩展,以构建“具有默认值的映射”:

class DefaultMap扩展了映射{
构造函数(deffal,iterable=[]){
超级(可编辑);
this.deffal=deffal;
}
获取(键){
如果(!this.has(key))
this.set(key,this.deffal);
返回super.get(key);
}
}
m=新的默认映射(9);
console.log(m.get('foo'));
m、 set('foo',m.get('foo')+1);
console.log(m.get('foo'))
创建对象:

function addToMap(map, key, value) {
    if (map.has(key)) {       
        map.set(key, parseInt(map.get(key), 10) + parseInt(value, 10));
    } else {
        map.set(key, parseInt(value, 10));
    }       
}
下面是我添加到上述标记对象的引用条目

ES 2015标准:
函数(){}
()=>{}

    tagObject = {};
    tagObject['contentID'] = [];  // adding an entry to the above tagObject
    tagObject['contentTypes'] = []; // same explanation as above
    tagObject['html'] = [];
这将增加特定对象键的计数

最近可能是

          let found = Object.keys(tagObject).find(
                (element) => {
                    return element === matchWithYourValueHere;
                });

          tagObject['occurrences'] = found ? tagObject['occurrences'] + 1 : 1;

您可以像这样使用三元运算符

map[key]?map[key]++:map[key]=1;

尝试使用if(type of map[key]=“undefined”)检查是否不存在。通常情况下,地图中不存在的东西将是未定义的。不为空。您不能只使用
hasOwnProperty
来检查您正在寻找的道具是否存在吗?通过“升旗”可能会重复您的意思是“短路评估”。这与升旗无关,尽管“升旗”是一个有趣的组合。JavaScript中没有升旗属性。不能使用所谓的“短路评估”。最终,它使用了相同的概念。你的代码中根本没有任何提升。你误读了这个问题<代码>变量a=a | | 1将涉及提升,因为
var
关键字(局部变量被提升)。在这里,您正在操作一个现有对象的属性,因此没有任何东西会被吊到任何地方。@ricky:没有。通过不存在的键获取值将返回
未定义的
(没有任何不可见的赋值)
undefined+1
给出NaN,这是一个错误的值,因此控件转到
|1
部分。我向你保证这里没有任何东西被吊起来。请阅读术语。
parseInt(未定义)
为NaN。您是否也声明了键的值?此外,“默认数组的值为字符串”只是垃圾,问题中没有数组。代码段有错误<代码>未捕获安全性错误
。我不确定这是代码本身的问题还是堆栈溢出问题。我只是想指出这一点。
          let found = Object.keys(tagObject).find(
                (element) => {
                    return element === matchWithYourValueHere;
                });

          tagObject['occurrences'] = found ? tagObject['occurrences'] + 1 : 1;
map[key] = (map[key] ?? 0) + 1;