Skip to content
目录

Object 对象

Object from key-value pairs (根据键值对创建对象)

使用 Array.reduce() 来创建和组合键值对。

JavaScript 代码:

jsx
const objectFromPairs = (arr) =>
  arr.reduce((a, v) => ((a[v[0]] = v[1]), a), {});
// objectFromPairs([['a',1],['b',2]]) -> {a: 1, b: 2}

Object to key-value pairs (对象转化为键值对 )

使用 Object.keys() 和 Array.map() 遍历对象的键并生成一个包含键值对的数组。

JavaScript 代码:

jsx
const objectToPairs = (obj) => Object.keys(obj).map((k) => [k, obj[k]]);
// objectToPairs({a: 1, b: 2}) -> [['a',1],['b',2]])

Invert object keys (反转对象键值)

当你需要将对象的键值对交换

js
const invert = (obj) =>
  Object.keys(obj).reduce((res, k) => Object.assign(res, { [obj[k]]: k }), {});
// invert({ name: "jack" }); // {jack: 'name'}

Shallow clone object (浅克隆对象)

使用 Object.assign() 和一个空对象({})来创建原始对象的浅拷贝。

JavaScript 代码:

jsx
const shallowClone = (obj) => Object.assign({}, obj);
/* const a = { x: true, y: 1 }; const b = shallowClone(a); a === b -> false */

注:JavaScript 中的对象拷贝方法有很多,这里有个总结,有兴趣可以看一下:https://www.html.cn/archives/8319

Remove invalid attributes (删除无效属性)

当你需要删除一个对象中的属性值为 null 或 undefined 的所有属性

js
const removeNullUndefined = (obj) =>
  Object.entries(obj).reduce(
    (a, [k, v]) => (v == null ? a : ((a[k] = v), a)),
    {}
  );
// removeNullUndefined({name: '', age: undefined, sex: null}) // { name: '' }

String to object (字符串转对象)

当你需要将一串字符串比如'{name: "jack"}'转换成对象时,直接使用 JSON.parse 将会报错。

js
const strParse = (str) =>
  JSON.parse(
    str.replace(/(\w+)\s*:/g, (_, p1) => `"${p1}":`).replace(/\'/g, '"')
  );
// strParse('{name: "jack"}')