国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

30-seconds-code——Object

lbool / 3124人閱讀

摘要:英文文章來源于刪除對象中除指定鍵值的屬性用遞歸的方法用方法遍歷對象然后刪除不是在給定數組中的屬性如果你傳入,它將對該鍵所對應的對象進行深度遍歷的變形非原著作對所有的鍵對應的對象進行深度遍歷用方法遍歷對象然后刪除不是在給定數組中的屬性如

英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md

Object cleanObj

刪除JSON對象中除指定鍵值的屬性.

用遞歸的方法
Object.keys() 方法遍歷JSON對象然后刪除不是include在給定數組中的屬性.
如果你傳入 childIndicator ,它將對該鍵所對應的JSON對象進行深度遍歷.

const cleanObj = (obj, keysToKeep = [], childIndicator) => {
  Object.keys(obj).forEach(key => {
    if (key === childIndicator) {
      cleanObj(obj[key], keysToKeep, childIndicator);
    } else if (!keysToKeep.includes(key)) {
      delete obj[key];
    }
  })
}
/*
  const testObj = {a: 1, b: 2, children: {a: 1, b: 2}}
  cleanObj(testObj, ["a"],"children")
  console.log(testObj)// { a: 1, children : { a: 1}}
*/
cleanObj的變形(非原著作)

對所有的鍵對應的JSON對象進行深度遍歷

Object.keys() 方法遍歷JSON對象然后刪除不是 include 在給定數組中的屬性.
如果給定的屬性值為object,則看傳入的 dep 是否為false,或者沒有第三個參數,則直接刪除.
如果傳入 dep 為true,則進行深度遍歷.

const cleanObj = (obj, keysToKeep = [], dep=false) => {
  Object.keys(obj).forEach(key => {
    if(dep) {
      if (obj[key].constructor.name === "Object") {
        cleanObj(obj[key], keysToKeep, dep)
      } else {
        if (!keysToKeep.includes(key)) {
          delete obj[key];
        }
      }
    } else {
      if (!keysToKeep.includes(key)) {
        delete obj[key];
      }
    }
  })
  return obj
}
/*
  const testObj = {a:1, b:{a:1, b:2, c:3}, c:{a:1, b:2}, d: {a:1, b:2, c:3}}
  cleanObj(testObj, ["a"],"children")  // {a: 1, b: {a: 1}, c: {a: 1}, d: {a: 1, c: 3}}
*/
objectFromPairs

將一個鍵值對形式的數組轉化為對象
Array.reduce() 去創建對象并合并鍵值對.

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

將一個對象轉化為鍵值對形式的數組.

Object.keys() 將對象轉化為對象的鍵數組,然后 Array.map() 生成一個鍵值對的數組.

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

按對象屬性和排序規則排序對象數組.

使用 Array.sort() 的自定義排序規則排序,根據傳入的 order排序方式,用解構來實現指定的屬性的位置交換.
如果沒有傳入參數 order 默認值為asc.

const orderBy = (arr, props, orders) =>
  arr.sort((a, b) =>
    props.reduce((acc, prop, i) => {
      if (acc === 0) {
        const [p1, p2] = orders && orders[i] === "desc" ? [b[prop], a[prop]] : [a[prop], b[prop]];
        acc = p1 > p2 ? 1 : p1 < p2 ? -1 : 0;
      }
      return acc;
    }, 0)
  );
/*
const users = [{ "name": "fred",   "age": 48 },{ "name": "barney", "age": 36 },
  { "name": "fred",   "age": 40 },{ "name": "barney", "age": 34 }];
orderby(users, ["name", "age"], ["asc", "desc"]) -> [{name: "barney", age: 36}, {name: "barney", age: 34}, {name: "fred", age: 48}, {name: "fred", age: 40}]
orderby(users, ["name", "age"]) -> [{name: "barney", age: 34}, {name: "barney", age: 36}, {name: "fred", age: 40}, {name: "fred", age: 48}]
*/
select

從一個對象中檢索出選擇其所代表的屬性.

如果屬性不存在返回 undefined.

const select = (from, selector) =>
  selector.split(".").reduce((prev, cur) => prev && prev[cur], from);

// const obj = {selector: {to: {val: "val to select"}}};
// select(obj, "selector.to.val"); -> "val to select"
shallowClone

對象的淺拷貝.

Object.assign() 和一個 ({}) 來實現對源對象的淺拷貝.

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

判斷第一個參數所代表的集合中的每一個對象中是否包含第二個參數所代表的屬性.

Array.every() 去檢查結合中每一個對象是否包含pre屬性.

const truthCheckCollection = (collection, pre) => (collection.every(obj => obj[pre]));
// truthCheckCollection([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}], "sex") -> true

更多關于30-seconds-code中文翻譯https://github.com/lvzhenbang/article/blob/master/js/30-seconds-code/index.md

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90528.html

相關文章

  • 30-seconds-code——adapter

    摘要:英文文章來源于給定一個鍵值和一組參數,但給定一個上下文時調用它們。 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Adapter call 給定一個鍵值和一組參數,但給定一個上下文時調用它們。 使用閉包調用存儲的鍵值與存儲的參數 const call = ( key, ....

    dcr309duan 評論0 收藏0
  • 30-seconds-code——string

    摘要:英文文章來源于計算一個字符串中字符的所有排序情況使用遞歸遍歷字符串中的每個字符計算剩余字符串的所有順序用區合并該字符和剩余字符串的每種順序然后用將該字符串的所有順序合并到一個數組中當字符串的等于或者時,是兩個基例字符串的首字母大寫用 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README...

    tinysun1234 評論0 收藏0
  • 30-seconds-code ——utility集合

    摘要:英文文章來源于返回參數列表中第一個非和的參數用實現返回第一個非參數返回一個用自定義函數中的函數是否返回來對中傳入的參數列表盡心過濾用去遍歷參數列表,用給定的函數的返回值來過濾參數列表返回給定值的基本類型返回給定值的構造函數名字的小 Utility 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master...

    Jochen 評論0 收藏0
  • 30-seconds-code——browser

    摘要:顯示所有指定的元素用操作符和清除所有指定元素的屬性。使用了兩個事件監聽器。將指定的數組元素轉換成元素標簽,然后將它們插入指定的選擇器元素內用和去生成一個元素標簽列表復制一個字符串到剪切板。用去執行復制到剪切板。 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Browser...

    izhuhaodev 評論0 收藏0
  • 30-seconds-code——array

    摘要:英文文章來源于數組最大公約數計算數字數組最大公約數用和運算式使用遞歸計算一個數字數組的最大公約數數組最小公倍數求數字數組的最小公倍數用和運算式使用遞歸計算一個數字數組的最小公倍數返回一個數組中的最大值。 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Array 數組最大公...

    adie 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<