Skip to content

JavaScript 的对象如何使用 map 函数

Posted on:2023年11月3日 at 22:00

JavaScript没有内置的对象map函数,但可以使用以下方法来实现:

function objectMap(object, callback) {
  const result = {};
  Object.keys(object).forEach(key => {
    result[key] = callback(object[key], key, object);
  });
  return result;
}

const myObject = { a: 1, b: 2, c: 3 };

const newObject = objectMap(myObject, value => value * 2);

console.log(newObject); // { a: 2, b: 4, c: 6 }
console.log(myObject); // { a: 1, b: 2, c: 3 }

objectMap函数接受两个参数:object和callback。object是我们要遍历的对象,callback是我们要应用于每个键值对的函数。objectMap函数返回一个新的对象,该对象包含所有键值对,其值已通过callback函数进行了转换。

ES6引入了一些新的特性,可以使用以下更简洁的方式来实现objectMap函数:

const objectMap = (obj, fn) =>
  Object.fromEntries(Object.entries(obj).map(([k, v], i) => [k, fn(v, k, i)]));

const myObject = { a: 1, b: 2, c: 3 };

const newObject = objectMap(myObject, v => 2 * v);

console.log(newObject); // { a: 2, b: 4, c: 6 }
console.log(myObject); // { a: 1, b: 2, c: 3 }

objectMap函数非常有用,可以用于各种场景,例如:

const newObject = objectMap(myObject, v => 2 * v);
const newObject = objectMap(myObject, (v, k) => k.toUpperCase());
const newObject = objectMap(myObject, v => v > 2);