# 实现一个map函数
补充一下JSON.stringify(value, replacer, space)
语法:
- value: 必需, 要转换的 JavaScript 值(通常为对象或数组)。
- replacer: 可选。用于转换结果的函数或数组。如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值,使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。
- space: 可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。
const targetData = {
a: 2,
b: 4,
c: 6,
d: 7
};
const objMap = (obj, fn) => {
if (typeof fn !== "function") {
throw new TypeError(`${fn} is not a function !`);
}
// 方法1:依次计算fn后的值
// const copy = Object.assign({}, obj)
// for (let key in copy) {
// copy[key] = fn(key, copy[key])
// }
// return copy
// 方法2:直接使用JSON.stringify(obj, fn)
return JSON.parse(JSON.stringify(obj, fn));
};
const result = objMap(targetData, (key, value) => {
if (value % 2 === 0) {
return value / 2;
}
return value;
});
console.log(result);
// { a: 1, b: 2, c: 3, d: 7 }
← 手写字符转base64 js实现单向链表 →