[訳]8つの実用的なJavaScript技術
14059 ワード
それぞれのプログラミング言語は独特の技術です.多くは開発者として知られていますが、中にはかなりのhackishがあります.こちらの文章の中で、私が役に立つと思うテクニックを紹介します.その中のいくつかは実践の中で使ったことがあります.もう一つは古い問題を解決する新しい方法です.Enjoy
1.配列の長さを確保する
このような状況に遭遇したことがあるかどうかは分かりませんが、グリッド構造を処理する時、元のデータの各行の長さが等しくない場合、データを再作成する必要があります.はい、会ったことがあります.各行のデータ長が同じであることを確認するために、
Array.fill
方法を使用することができます.let array = Array(5).fill('');
console.log(array); // (5)["", "", "", "", ""]
2.配列の消去ES 6は非常に簡潔な配列の重い除去方法をいくつか提供しています.残念なことに、それらは非基本型の配列を処理するのに適していない.後で苦手な行列でもう一つの文を読み返すことができます.ここでは基本タイプの配列のみに注目します.
const cars = [
'Mazda',
'Ford',
'Renault',
'Opel',
'Mazda'
]
const uniqueWithArrayFrom = Array.from(new Set(cars));
console.log(uniqueWithArrayFrom); // ["Mazda", "Ford", "Renault", "Opel"]
const uniqueWithSpreadOperator = [...new Set(cars)];
console.log(uniqueWithSpreadOperator);// ["Mazda", "Ford", "Renault", "Opel"]
3.拡張演算子でオブジェクトとオブジェクト配列を結合する合併対象は珍しい問題ではありません.すでにこの問題に遭遇したかもしれません.近い未来にまた会うかもしれません.違いは、過去にほとんどの作業を手動で完了しましたが、今からES 6の新しい機能を使用します.
//
const product = { name: 'Milk', packaging: 'Plastic', price: '5$' }
const manufacturer = { name: 'Company Name', address: 'The Company Address' }
const productManufacturer = { ...product, ...manufacturer };
console.log(productManufacturer);
// { name: "Company Name", packaging: "Plastic", price: "5$", address: "The Company Address" }
//
const cities = [
{ name: 'Paris', visited: 'no' },
{ name: 'Lyon', visited: 'no' },
{ name: 'Marseille', visited: 'yes' },
{ name: 'Rome', visited: 'yes' },
{ name: 'Milan', visited: 'no' },
{ name: 'Palermo', visited: 'yes' },
{ name: 'Genoa', visited: 'yes' },
{ name: 'Berlin', visited: 'no' },
{ name: 'Hamburg', visited: 'yes' },
{ name: 'New York', visited: 'yes' }
];
const result = cities.reduce((accumulator, item) => {
return {
...accumulator,
[item.name]: item.visited
}
}, {});
console.log(result);
/*
Berlin: "no"
Genoa: "yes"
Hamburg: "yes"
Lyon: "no"
Marseille: "yes"
Milan: "no"
New York: "yes"
Palermo: "yes"
Paris: "no"
Rome: "yes"
*/
4.配列マッピング(Array.map
を使用しない)ここには
Array.map
を使用せずに配列マッピングを実現できる別の方法があると知っていますか?分からないなら、続けて見てください.const cities = [
{ name: 'Paris', visited: 'no' },
{ name: 'Lyon', visited: 'no' },
{ name: 'Marseille', visited: 'yes' },
{ name: 'Rome', visited: 'yes' },
{ name: 'Milan', visited: 'no' },
{ name: 'Palermo', visited: 'yes' },
{ name: 'Genoa', visited: 'yes' },
{ name: 'Berlin', visited: 'no' },
{ name: 'Hamburg', visited: 'yes' },
{ name: 'New York', visited: 'yes' }
];
const cityNames = Array.from(cities, ({ name}) => name);
console.log(cityNames);
// ["Paris", "Lyon", "Marseille", "Rome", "Milan", "Palermo", "Genoa", "Berlin", "Hamburg", "New York"]
5.条件に応じてオブジェクトの属性を追加する今は、条件によって2つの異なるオブジェクトを作成する必要はありません.特定の属性を持つようにします.拡張操作は完璧な選択となります.
const getUser = (emailIncluded) => {
return {
name: 'John',
surname: 'Doe',
...(emailIncluded ? { email : '[email protected]' } : null)
}
}
const user = getUser(true);
console.log(user); // { name: "John", surname: "Doe", email: "[email protected]" }
const userWithoutEmail = getUser(false);
console.log(userWithoutEmail); // { name: "John", surname: "Doe" }
6.元のデータを構成する非常に多くの属性を持つ対象を扱ったことがありますか?きっとあったと思います.最も一般的な場合は、すべてのデータと詳細が含まれているユーザーオブジェクトがあります.ここでは、この大きなトラブルを解決するために新しいES解凍方法を呼び出すことができます.次の例を見てみましょう.
const rawUser = {
name: 'John',
surname: 'Doe',
email: '[email protected]',
displayName: 'SuperCoolJohn',
joined: '2016-05-05',
image: 'path-to-the-image',
followers: 45
...
}
上のオブジェクトを二つに分けることで、このオブジェクトをより文脈的な意味で表現することができます.let user = {}, userDetails = {};
({ name: user.name, surname: user.surname, ...userDetails } = rawUser);
console.log(user); // { name: "John", surname: "Doe" }
console.log(userDetails); // { email: "[email protected]", displayName: "SuperCoolJohn", joined: "2016-05-05", image: "path-to-the-image", followers: 45 }
7.オブジェクト属性名を動的に設定する過去においては、オブジェクトの属性名を動的に設定する必要がある場合、まずオブジェクトを宣言してから属性を割り当てる必要があります.これは単純な声明では実現できない.今は以前と違って、ES 6の機能でこの目標を達成できます.
const dynamic = 'email';
let user = {
name: 'John',
[dynamic]: '[email protected]'
}
console.log(user); // { name: "John", email: "[email protected]" }
8.文字列補間最後に重要なのは文字列をつなぎ合わせる新しい方法です.補助プログラムでテンプレート文字列を構築したいなら、これは非常に有用です.動的接続文字列のモデルがより簡単になりました.
const user = {
name: 'John',
surname: 'Doe',
details: {
email: '[email protected]',
displayName: 'SuperCoolJohn',
joined: '2016-05-05',
image: 'path-to-the-image',
followers: 45
}
}
const printUserInfo = (user) => {
const text = `The user is ${user.name} ${user.surname}. Email: ${user.details.email}. Display Name: ${user.details.displayName}. ${user.name} has ${user.details.followers} followers.`
console.log(text);
}
printUserInfo(user);
// 'The user is John Doe. Email: [email protected]. Display Name: SuperCoolJohn. John has 45 followers.'
締め括りをつけるJavaScriptの世界は急速に広がっています.ここにはかっこいい機能がたくさんあります.いつでも使えます.手を焼いたり、時間がかかったりする問題はだんだん過去にフェードアウトしています.また、ES 6の新しい機能を利用して、開梱して使う新しい解決策がたくさんあります.
これが今日共有したい内容の全部です.もしあなたもこの文章が好きなら、転送してください.
読んでくれてありがとうございます.また会いましょう.
翻訳文に誤りがあったり、他の改善が必要なところがあれば、翻訳文を訂正してPRすることもできます.冒頭の本文の永久リンクは本稿のGitHub上のMarkDownリンクである.
金を掘り起こす翻訳計画は優良品質のインターネット技術の文章を翻訳するコミュニティで、文章の出所は金の上の英文を掘り起こして文章を分かち合うためです.Android、iOS、フロントエンド、バックエンド、ブロックチェーン、製品、デザイン、人工知能などの分野をカバーしています.より良い訳文を見たいです.引き続き、キング翻訳計画、公式微博、知乎コラムに注目してください.
転載先:https://juejin.im/post/5cff97276fb9a07ea420749f