js map为什么不用return返回我的值

时间:2017-11-02 08:03:56

标签: javascript

我正在使用变量进行映射,并返回以更改其值,但它不起作用,整个数组的值是相同的:

  //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);

2 个答案:

答案 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()的第一句话。