使用 mapObjIndexed() 改變 Object 的 Value

栏目: JavaScript · 发布时间: 6年前

内容简介:在 Array,我們有VS Code 1.35.1Quokka 1.0.227

在 Array,我們有 map() 能在 Length 不變前提下,改變其 Element;若要在 Object 的 Key 不變前提下,根據其 Key 改變 Value,Ramda 提供了 mapObjIndexed()

Version

VS Code 1.35.1

Quokka 1.0.227

Ramda 0.26.1

Change Value by Key

import { mapObjIndexed } from 'ramda';

let data = {
  'FP in JavaScript': 100,
  'RxJS in Action': 200,
  'Speaking JavaScript': 300
};

// fn :: {a} -> {a}
let fn = mapObjIndexed((val, key) => `Price of ${key} is ${val}`);

console.dir(fn(data));

data 為 object,我們希望在 key 不變前提下,將 value 改成類似 Price of FP in JavaScript is 100 格式,其中 value 改變還牽涉到 key,此時就很適合使用 mapObjIndexed()

mapObjIndexed()

((*, String, Object) → *) → Object → Object

Object 版的 map() ,提供 value 與 key 給 callback 使用

(*, String, Object) -> * :callback,其中 * 為 value, String 為 key, Object 原本的 object。

Object :data 為 object

Object :回傳 map 後的 object

使用 mapObjIndexed() 改變 Object 的 Value

Only Change by Value

import { mapObjIndexed } from 'ramda';

let data = {
  'FP in JavaScript': 100,
  'RxJS in Action': 200,
  'Speaking JavaScript': 300
};

// fn :: {a} -> {a}
let fn = mapObjIndexed(val => `Price is ${val}`);

console.dir(fn(data));

若 value 改變不牽涉到 key,只與 value 有關,則 callback 可以不用傳入 key,只傳入 value 即可。

使用 mapObjIndexed() 改變 Object 的 Value

import { map } from 'ramda';

let data = {
  'FP in JavaScript': 100,
  'RxJS in Action': 200,
  'Speaking JavaScript': 300
};

// fn :: {a} -> {a}
let fn = map(val => `Price is ${val}`);

console.dir(fn(data));

事實上若 value 改變不牽涉到 key,只與 value 有關,其實使用 map() 亦可。

使用 mapObjIndexed() 改變 Object 的 Value

Change Value by Index

import { map, addIndex } from 'ramda';

let data = {
  'FP in JavaScript': 100,
  'RxJS in Action': 200,
  'Speaking JavaScript': 300
};

// fn :: {a} -> {a}
let fn = addIndex(map)((val, idx) => `Price ${idx} is ${val}`);

console.dir(fn(data));

若 value 改變不牽涉到 key,而是與 index 有關,則要用 addIndex()map() 組合的新 function,其 callback 的第二個參數為 index。

使用 mapObjIndexed() 改變 Object 的 Value


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Music Recommendation and Discovery

Music Recommendation and Discovery

Òscar Celma / Springer / 2010-9-7 / USD 49.95

With so much more music available these days, traditional ways of finding music have diminished. Today radio shows are often programmed by large corporations that create playlists drawn from a limited......一起来看看 《Music Recommendation and Discovery》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具