使用 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


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

查看所有标签

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

算法设计与实验题解

算法设计与实验题解

王晓东 / 电子工业 / 2006-9 / 46.00元

《算法设计与实验题解》是与普通高等教育“十一五”国家级规划教材《计算机算法设计与分析》(第2版)配套的辅助教材,对主教材中的全部习题做了解答或给出了解题思路提示,并对主教材的内容进行了扩展,有些主教材中无法讲述的较深入的主题以习题的形式展现出来。为了提高学生解决实际问题的能力,《算法设计与实验题解》还将主教材中的许多习题改造成算法实现题,要求学生设计出算法并上机实现。作者还结合精品课程建设,进行了......一起来看看 《算法设计与实验题解》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具