将Javascript对象值增量为;加入“;阵列

将Javascript对象值增量为;加入“;阵列,javascript,jquery,Javascript,Jquery,我有一个javascript对象: {"Vanilla": 36, "Chocolate": 50, "Stracciatella": 24, "Coffee": 18} 我想将此数组“添加”到其中: ["Vanilla", "Amarena", "Chocolate", "Pistachio"] 我想要的结果是: { "Vanilla": 37, "Chocolate": 51, "Stracciatella": 24, "Coffee": 18,

我有一个javascript对象:

{"Vanilla": 36, "Chocolate": 50, "Stracciatella": 24, "Coffee": 18}
我想将此数组“添加”到其中:

["Vanilla", "Amarena", "Chocolate", "Pistachio"]
我想要的结果是:

{
    "Vanilla": 37,
    "Chocolate": 51,
    "Stracciatella": 24,
    "Coffee": 18,
    "Amarena": 1,
    "Pistachio": 1
}
这就是我尝试过的:

var me = ["Vanilla", "Amarena", "Chocolate", "Pistachio"]
var all = {
    "Vanilla": 36,
    "Chocolate": 50,
    "Stracciatella": 24,
    "Coffee": 18
}
var keys = Object.keys(all);
for (var i = 0; i < me.length; i++) {
    if (me[i] in keys) {
        console.log("keys:" + keys + " - " + me[i] + " in keys");
    } else {
        console.log("keys:" + keys + " - " + me[i] + " not in keys");

    };
}

console.log(keys);
var me=[“香草”、“阿玛瑞娜”、“巧克力”、“开心果”]
var all={
“香草”:36,
“巧克力”:50,
“Stracciatella”:24,
“咖啡”:18
}
var keys=Object.keys(全部);
对于(变量i=0;i
这很有效

你的小提琴中的第一部分代码

var me = ["Vanilla", "Amarena", "Chocolate", "Pistachio"]
var all = {
    "Vanilla": 36,
    "Chocolate": 50,
    "Stracciatella": 24,
    "Coffee": 18
}
现在答案是:

me.forEach(function(key) { // forEach iterates through an array 
    all[key] = (all[key] || 0) + 1; // create new item if it doesn't exist
});
forEach()方法对每个数组元素执行一次提供的函数

有关.forEach的更详细描述,请参见上述描述的来源

由于这个问题被标记为
jQuery
,让我们添加一些
jQuery
代码,只是为了好玩

$.each(me, function(unusedIndex, key) {
    all[key] = (all[key] || 0) + 1;exist
});
jQuery.each()一个通用迭代器函数,可用于无缝迭代对象和数组。数组和具有length属性的类似数组的对象(例如函数的arguments对象)通过数值索引从0到length-1进行迭代。其他对象通过其命名属性进行迭代。-来源

这是我在自娱自乐-

这很管用

你的小提琴中的第一部分代码

var me = ["Vanilla", "Amarena", "Chocolate", "Pistachio"]
var all = {
    "Vanilla": 36,
    "Chocolate": 50,
    "Stracciatella": 24,
    "Coffee": 18
}
现在答案是:

me.forEach(function(key) { // forEach iterates through an array 
    all[key] = (all[key] || 0) + 1; // create new item if it doesn't exist
});
forEach()方法对每个数组元素执行一次提供的函数

有关.forEach的更详细描述,请参见上述描述的来源

由于这个问题被标记为
jQuery
,让我们添加一些
jQuery
代码,只是为了好玩

$.each(me, function(unusedIndex, key) {
    all[key] = (all[key] || 0) + 1;exist
});
jQuery.each()一个通用迭代器函数,可用于无缝迭代对象和数组。数组和具有length属性的类似数组的对象(例如函数的arguments对象)通过数值索引从0到length-1进行迭代。其他对象通过其命名属性进行迭代。-来源


这是我在玩我自己-

以下代码允许您根据数组中的键来增加对象
股票
中的值
股票更新

var stockUpdate = ["Vanilla", "Amarena", "Chocolate", "Pistachio"];
var stock = {
    "Vanilla": 36,
    "Chocolate": 50,
    "Stracciatella": 24,
    "Coffee": 18
};

for (var i=0; i < stockUpdate.length; i++) {
    var stockType = stockUpdate[i];
    if (stock[stockType] === undefined) {
        stock[stockType] = 0;
    }
    stock[stockType]++;
}
var stockUpdate=[“香草”、“阿玛莲娜”、“巧克力”、“开心果”];
var股票={
“香草”:36,
“巧克力”:50,
“Stracciatella”:24,
“咖啡”:18
};
对于(var i=0;i
下面的代码允许您根据数组中的键来增加对象
库存中的值
stockUpdate

var stockUpdate = ["Vanilla", "Amarena", "Chocolate", "Pistachio"];
var stock = {
    "Vanilla": 36,
    "Chocolate": 50,
    "Stracciatella": 24,
    "Coffee": 18
};

for (var i=0; i < stockUpdate.length; i++) {
    var stockType = stockUpdate[i];
    if (stock[stockType] === undefined) {
        stock[stockType] = 0;
    }
    stock[stockType]++;
}
var stockUpdate=[“香草”、“阿玛莲娜”、“巧克力”、“开心果”];
var股票={
“香草”:36,
“巧克力”:50,
“Stracciatella”:24,
“咖啡”:18
};
对于(var i=0;i
你就快到了

var me = ["Vanilla", "Amarena", "Chocolate", "Pistachio"]
var all = {
    "Vanilla": 36,
    "Chocolate": 50,
    "Stracciatella": 24,
    "Coffee": 18
}
var keys = Object.keys(all);
for (var i = 0; i < me.length; i++) {
    if (keys.indexOf(me[i]) >= 0) {
        console.log("keys:" + keys + " - " + me[i] + " in keys \n");
        all[me[i]]++;
    } else {
        console.log("keys:" + keys + " - " + me[i] + " not in keys \n");
        all[me[i]] = 1;
    };
}

console.log(all);
reduce()方法对累加器和数组的每个值(从左到右)应用一个函数,将其减少为单个值

在这种情况下,我从左到右减少
newItems
列表,计算
items
对象中的计数,并返回计算出的项目。

您就快到了

var me = ["Vanilla", "Amarena", "Chocolate", "Pistachio"]
var all = {
    "Vanilla": 36,
    "Chocolate": 50,
    "Stracciatella": 24,
    "Coffee": 18
}
var keys = Object.keys(all);
for (var i = 0; i < me.length; i++) {
    if (keys.indexOf(me[i]) >= 0) {
        console.log("keys:" + keys + " - " + me[i] + " in keys \n");
        all[me[i]]++;
    } else {
        console.log("keys:" + keys + " - " + me[i] + " not in keys \n");
        all[me[i]] = 1;
    };
}

console.log(all);
reduce()方法对累加器和数组的每个值(从左到右)应用一个函数,将其减少为单个值


在本例中,我从左到右减少了
newItems
列表,计算
items
对象中的计数,并返回计算出的项目。

现在是使用以下内容的好时机:


这是一个很好的时机:


欢迎来到堆栈溢出!请阅读,环顾四周,并通读,特别是与您的问题相关的任何代码必须在您的问题中,而不仅仅是链接。链接会腐烂,使问题及其答案在将来对人们毫无用处,人们不应该跟随一些随机链接来帮助你。如果这个问题没有意义,没有链接就无法回答,那么这个网站就不适合。相反,把问题放进去。欢迎来到堆栈溢出!请阅读,环顾四周,并通读,特别是与您的问题相关的任何代码必须在您的问题中,而不仅仅是链接。链接会腐烂,使问题及其答案在将来对人们毫无用处,人们不应该跟随一些随机链接来帮助你。如果这个问题没有意义,没有链接就无法回答,那么这个网站就不适合。尽管这个答案更优雅,但它没有考虑到OP显然具有的编码级别。因此,来自@anthony blackshaw的答案更适合作为这篇特定文章的答案。@Hurtz,所以把这一级别提高一点。数组方法和简单循环一样是原始知识。两者都不是量子力学。所以这个答案和for循环一样有意义。@JaromandaX关心您详细说明什么是
.forEach
,以及它是如何工作的吗?不管怎样,答案很好,省略注释。使用
all[key]++
再删除一个字节。我同意。除了评论之外,这是一个非常好的方法。谢谢你详细介绍机械师+1尽管这个答案更加优雅,但它没有考虑到OP显然具有的编码级别。因此,来自@anthony blackshaw的答案更适合作为这篇特定文章的答案。@Hurtz,所以把这一级别提高一点。数组方法和简单循环一样是原始知识。两者都不是量子力学。所以这个答案是