我正在使用变量进行映射,并返回以更改其值,但它不起作用,整个数组的值是相同的:
//resultValues = processValues(table,resultValues,'toClient');
resultValues.map ( (record) => {
record = processValues(table,record,'toClient');
return record;
});
return Promise.resolve(resultValues); // does not change
所以我必须创建另一个变量才能对数组进行更改。为什么这个行为?这在地图中是正常的吗?是否有另一个选项与lodash示例,不需要创建第二个变量?
let newResult = [];
resultValues.map ( (record) => {
record = processValues(table,record,'toClient');
newResult.push(record); // with this changes are sent to new var
//return record;
});
// return Promise.resolve(resultValues);
return Promise.resolve(newResult);
答案 0 :(得分:4)
Array.map
返回一个新的数组实例,其中的每个元素都被转换:
let ret = resultValues.map (record => processValues(table,record,'toClient'));
return Promise.resolve(ret);
答案 1 :(得分:0)
Map返回一个新数组。你可以这样做:
const newArr = resultValues.map ( (record) => {
record = processValues(table,record,'toClient');
return record;
});
请阅读MDN web docs for map()的第一句话。