2017-03-27 75 views
0

這可能是個愚蠢的問題,但我想快速解決這個問題。將2個值分配給整個鍵的數組

我有默認顏色數組:

foreg:defColors = ['green', 'yellow'];

,我有柱的另一個數組

cols = ['lowest', 'low', 'medium', 'high', 'highest'];

我有前三個項目中的值cols陣列等這個。

filler = ['lowest': 'darkred', 'low': 'red'];

,現在我想將值分配給的cols陣列的價值休息,使它看起來像這樣:

filler = [lowest: 'darkred', low: 'red', medium: 'green', high: 'yellow', highest: 'green']

這可能會非常棘手,但我想正是這樣,所以如果默認顏色有2個項目,它將爲循環中的項目分配其所有剩餘項目的值。

注:我也有不都這樣分配其價值山坳元素的數組:

remainingKeys = ['medium', 'high', 'highest'];

+0

'填料= [最低:暗紅色,低:紅色];'這是串或對象的陣列?您擁有它的方式不是語法上有效的JavaScript。 – gyre

+0

@gyre,我懶得加引號,他們都是字符串 –

+0

你的'filler'數組不正確 – Weedoze

回答

1

您可以使用Array#forEach遍歷您remainingKeys並更新filler的屬性對象(請注意,由於它不是數組,它應該括在大括號內而不是方括號內)。 remainder operator%)在此處用於以重複模式從defColors陣列中選擇顏色。

var defColors = ['green', 'yellow'] 
 
var cols = ['lowest', 'low', 'medium', 'high', 'highest'] 
 
var filler = {'lowest': 'darkred', 'low': 'red'} 
 
var remainingKeys = ['medium', 'high', 'highest']; 
 

 

 
remainingKeys.forEach(function (key, i) { 
 
    this[key] = defColors[i % defColors.length] 
 
}, filler) 
 

 
console.log(filler)
.as-console-wrapper { min-height: 100%; }

+0

不好意思,但是因爲直到不久之前我才意識到這一點,所以我想我會分享一些知識。 '%'是[餘數運算符](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Remainder_%28%29),與模數有細微的差別(不同之處在於處理負數的方式)。JS目前沒有真正的模運算符,但有一個[建議添加一個](http://wiki.ecmascript.org/doku ?.PHP ID =稻草人:modulo_operator)。 –

+0

我很感謝你分享這個區別;我已經意識到'%'與數學'mod'在這方面有所不同,但不知道約定是將它稱爲「餘數算子」。請注意,在這種情況下,差異是無關緊要的,因爲'i'和'defColors.length'都不會是負面的。 – gyre