我想用另一个数组中的值修改以下forEach结果,但我无法使其工作。
const BbDescriptionDictionary = ['AAA' , 'BBB', 'CCC',]
const boardBasisOptionsModified = [];
this.boardBasisOptions.forEach( (value) => {
boardBasisOptionsModified.push({
"key": value, "value": BbDescriptionDictionary[value]
});
});
this.boardBasisOptions = boardBasisOptionsModified;
您可以为.forEach
提供第二个参数,指示boardBasisOptions
的索引。像这样:
this.boardBasisOptions.forEach( (value, index) => {
boardBasisOptionsModified.push({
"key": value, "value": BbDescriptionDictionary[index]
});
});
您可能需要在forEach
循环中添加index
参数:
(我也用一些值初始化了boardBasisOptions
)
请参阅以下工作片段:
boardBasisOptions = ['key1', 'key2', 'key3'];
const BbDescriptionDictionary = ['AAA', 'BBB', 'CCC', ]
const boardBasisOptionsModified = [];
this.boardBasisOptions.forEach((value, index) => {
boardBasisOptionsModified.push({
"key": value,
"value": BbDescriptionDictionary[index]
});
});
this.boardBasisOptions = boardBasisOptionsModified;
console.log("boardBasisOptions:");
console.log(this.boardBasisOptions);
您正试图使用值而不是索引来访问BbDescriptionDictionay
数组中的值。您必须使用索引来访问数组的值。
只需添加index
作为forEach
函数的第二个参数。
this.boardBasisOptions.forEach( (value, index) => {
boardBasisOptionsModified.push({
"key": value, "value": BbDescriptionDictionary[index]
});
});
通过获取索引,可以使用Array#map
而不是Array#push
。
const BbDescriptionDictionary = ['AAA', 'BBB', 'CCC',]
this.boardBasisOptions = this
.boardBasisOptions
.map((key, index) => ({ key, value: BbDescriptionDictionary[index] }));
您应该只使用Array.prototype.map()
来创建一个新的变异数组,而不是担心创建临时数组、变异数组然后分配它们。
const BbDescriptionDictionary = ['AAA' , 'BBB', 'CCC',]
// Map runs the function on each array item and returns a new array
// with mutated the return value of that function
// Note: ({ ... }) is a shorthand way of returning a value
// (object in this case) without a function body {}
this.boardBasisOptions = this.boardBasisOptions.map((key, index) => ({
// Shorthand way of assigning a variable to an object using the var
// name as the key
key,
value: BbDescriptionDictionary[index]
})
覆盖这样的属性被认为是不好的做法,所以我会将原始的boardBasisOptions
返回到一个新的属性,并在以后使用它:
const BbDescriptionDictionary = ['AAA' , 'BBB', 'CCC',]
this.boardBasisOptionsWithDescriptions = this.boardBasisOptions.map((key, index) => ({
key,
value: BbDescriptionDictionary[index]
})
希望能帮助