检查对象中的键并在比较后添加新键

时间:2018-03-15 02:34:14

标签: javascript

这可能是一个重复的问题,但我在第二部分遇到了麻烦。

我有

 var x = {2000: 3, 2001: 3, 2003: 2, 2006: 1, 2007: 1, 2008: 1, 2010: 1, 2012: 1, 2014: 2}
 var y = ["2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007, "2008", "2009", "2010", "2011", "2012", "2013", "2014"]

这就是我想做的事。

首先,检查yx不存在的内容,将隐含年份值作为要比较的值。

然后,对于每个差异(例如,您可以看到,x中不存在2002,2004或2005),我想将缺失的年份添加到x0的关键。

1 个答案:

答案 0 :(得分:1)

您可以循环播放y变量并检查x[key]是否为undefined。如果是,则指定0.

var x = {2000: 3, 2001: 3, 2003: 2, 2006: 1, 2007: 1, 2008: 1, 2010: 1, 2012: 1, 2014: 2};
var y = ["2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014"]

y.forEach(v=>{
    if ( x[ v ] === undefined ) x[ v ] = 0;
});
	
console.log( x );

或者你可以缩短为

var x = {2000: 3, 2001: 3, 2003: 2, 2006: 1, 2007: 1, 2008: 1, 2010: 1, 2012: 1, 2014: 2};
var y = ["2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014"]

y.forEach(v => x[v] = x[v] || 0);

console.log(x);