diff --git a/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/es6/write-concise-object-literal-declarations-using-simple-fields.chinese.md b/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/es6/write-concise-object-literal-declarations-using-simple-fields.chinese.md deleted file mode 100644 index 1591d6cfa5..0000000000 --- a/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/es6/write-concise-object-literal-declarations-using-simple-fields.chinese.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -id: 587d7b8a367417b2b2512b4f -title: Write Concise Object Literal Declarations Using Simple Fields -challengeType: 1 -videoUrl: '' -localeTitle: 使用简单字段编写简明对象文字声明 ---- - -## Description -
ES6为轻松定义对象文字添加了一些很好的支持。请考虑以下代码:
const getMousePosition =(x,y)=>({
x:x,
y:y
});
getMousePosition是一个简单的函数,它返回一个包含两个字段的对象。 ES6提供了语法糖,以消除必须写入x: x的冗余。您可以简单地编写一次x ,它将被转换为x: x (或类似的东西)。这是从上面重写的相同函数使用这个新语法:
const getMousePosition =(x,y)=>({x,y});
- -## Instructions -
使用带有对象文字的简单字段来创建和返回Person对象。
- -## Tests -
- -```yml -tests: - - text: '输出是{name: "Zodiac Hasbro", age: 56, gender: "male"} 。' - testString: assert(() => {const res={name:"Zodiac Hasbro",age:56,gender:"male"}; const person=createPerson("Zodiac Hasbro", 56, "male"); return Object.keys(person).every(k => person[k] === res[k]);}); - - text: '不:被使用了。' - testString: getUserInput => assert(!getUserInput("index").match(/:/g)); - -``` - -
- -## Challenge Seed -
- -
- -```js -const createPerson = (name, age, gender) => { - "use strict"; - // change code below this line - return { - name: name, - age: age, - gender: gender - }; - // change code above this line -}; -console.log(createPerson("Zodiac Hasbro", 56, "male")); // returns a proper object - -``` - -
- - - -
- -## Solution -
- -```js -// solution required -``` -
diff --git a/curriculum/challenges/chinese/03-front-end-libraries/react/manage-updates-with-lifecycle-methods.chinese.md b/curriculum/challenges/chinese/03-front-end-libraries/react/manage-updates-with-lifecycle-methods.chinese.md deleted file mode 100644 index 2152b34722..0000000000 --- a/curriculum/challenges/chinese/03-front-end-libraries/react/manage-updates-with-lifecycle-methods.chinese.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -id: 5a24c314108439a4d403617f -title: Manage Updates with Lifecycle Methods -challengeType: 6 -isRequired: false -videoUrl: '' -localeTitle: 使用生命周期方法管理更新 ---- - -## Description -
另一个生命周期方法是componentWillReceiveProps() ,只要组件正在接收新的道具就会调用它。此方法接收新的props作为参数,通常写为nextProps 。您可以使用此参数并与this.props进行比较,并在组件更新之前执行操作。例如,您可以在处理更新之前在本地调用setState() 。另一种方法是componentDidUpdate() ,并在组件重新渲染后立即调用。请注意,渲染和安装在组件生命周期中被视为不同的东西。首次加载页面时,将挂载所有组件,这是调用componentWillMount()componentDidMount()位置。在此之后,随着状态的改变,组件会重新渲染自己。下一个挑战将更详细地介绍这一点。
- -## Instructions -
子组件Dialog从其父组件Controller组件接收message道具。在Dialog组件中编写componentWillReceiveProps()方法,并将this.propsnextProps到控制台。您需要将nextProps作为参数传递给此方法,虽然可以将其命名为任何名称,但nextProps其命名为nextProps 。接下来,在Dialog组件中添加componentDidUpdate() ,并记录一条说明组件已更新的语句。此方法的工作方式类似于为您提供的componentWillUpdate() 。现在单击按钮更改消息并观察浏览器控制台。控制台语句的顺序显示调用方法的顺序。 注意:您需要将生命周期方法编写为普通函数而不是箭头函数来传递测试(将生命周期方法编写为箭头函数也没有优势)。
- -## Tests -
- -```yml -tests: - - text: Controller组件应将Dialog组件呈现为子组件。 - testString: 'assert((function() { const mockedComponent = Enzyme.mount(React.createElement(Controller)); return mockedComponent.find("Controller").length === 1 && mockedComponent.find("Dialog").length === 1; })(), "The Controller component should render the Dialog component as a child.");' - - text: Dialog组件中的componentWillReceiveProps方法应将this.props记录到控制台。 - testString: 'assert((function() { const lifecycleChild = React.createElement(Dialog).type.prototype.componentWillReceiveProps.toString().replace(/ /g,""); return lifecycleChild.includes("console.log") && lifecycleChild.includes("this.props") })(), "The componentWillReceiveProps method in the Dialog component should log this.props to the console.");' - - text: Dialog组件中的componentWillReceiveProps方法应将nextProps记录到控制台。 - testString: 'assert((function() { const lifecycleChild = React.createElement(Dialog).type.prototype.componentWillReceiveProps.toString().replace(/ /g,""); const nextPropsAsParameterTest = /componentWillReceiveProps(| *?= *?)(\(|)nextProps(\)|)( *?=> *?{| *?{|{)/; const nextPropsInConsoleLogTest = /console\.log\(.*?nextProps\b.*?\)/; return ( lifecycleChild.includes("console.log") && nextPropsInConsoleLogTest.test(lifecycleChild) && nextPropsAsParameterTest.test(lifecycleChild) ); })(), "The componentWillReceiveProps method in the Dialog component should log nextProps to the console.");' - - text: Dialog组件应调用componentDidUpdate方法并将消息记录到控制台。 - testString: 'assert((function() { const lifecycleChild = React.createElement(Dialog).type.prototype.componentDidUpdate.toString().replace(/ /g,""); return lifecycleChild.length !== "undefined" && lifecycleChild.includes("console.log"); })(), "The Dialog component should call the componentDidUpdate method and log a message to the console.");' - -``` - -
- -## Challenge Seed -
- -
- -```jsx -class Dialog extends React.Component { - constructor(props) { - super(props); - } - componentWillUpdate() { - console.log('Component is about to update...'); - } - // change code below this line - - // change code above this line - render() { - return

{this.props.message}

- } -}; - -class Controller extends React.Component { - constructor(props) { - super(props); - this.state = { - message: 'First Message' - }; - this.changeMessage = this.changeMessage.bind(this); - } - changeMessage() { - this.setState({ - message: 'Second Message' - }); - } - render() { - return ( -
- - -
- ); - } -}; - -``` - -
- - -### After Test -
- -```js -console.info('after the test'); -``` - -
- -
- -## Solution -
- -```js -// solution required -``` -
diff --git a/curriculum/challenges/chinese/08-coding-interview-prep/data-structures/remove-from-a-set.chinese.md b/curriculum/challenges/chinese/08-coding-interview-prep/data-structures/remove-from-a-set.chinese.md deleted file mode 100644 index 4127ac9f38..0000000000 --- a/curriculum/challenges/chinese/08-coding-interview-prep/data-structures/remove-from-a-set.chinese.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: 587d8253367417b2b2512c6b -title: Remove from a Set -challengeType: 1 -videoUrl: '' -localeTitle: 从集合中删除 ---- - -## Description -
在本练习中,我们将为我们的集创建一个删除函数。该函数应命名为this.remove 。此函数应接受一个值并检查它是否存在于集合中。如果是,请从集合中删除该值,然后返回true。否则,返回false。
- -## Instructions -
-
- -## Tests -
- -```yml -tests: - - text: 您的Set类应该有一个remove方法。 - testString: 'assert((function(){var test = new Set(); return (typeof test.remove === "function")}()), "Your Set class should have a remove method.");' - - text: 您的remove方法应该只删除集合中存在的项目。 - testString: 'assert.deepEqual((function(){var test = new Set(); test.add("a");test.add("b");test.remove("c"); return test.values(); })(), ["a", "b"], "Your remove method should only remove items that are present in the set.");' - - text: 您的remove方法应从集合中删除给定的项目。 - testString: 'assert((function(){var test = new Set(); test.add("a");test.add("b");test.remove("a"); var vals = test.values(); return (vals[0] === "b" && vals.length === 1)}()), "Your remove method should remove the given item from the set.");' - -``` - -
- -## Challenge Seed -
- -
- -```js -function Set() { - // the var collection will hold the set - var collection = []; - // this method will check for the presence of an element and return true or false - this.has = function(element) { - return (collection.indexOf(element) !== -1); - }; - // this method will return all the values in the set - this.values = function() { - return collection; - }; - // this method will add an element to the set - this.add = function(element) { - if(!this.has(element)){ - collection.push(element); - return true; - } - return false; - }; - // change code below this line - // change code above this line -} - -``` - -
- - - -
- -## Solution -
- -```js -// solution required -``` -
diff --git a/curriculum/challenges/chinese/08-coding-interview-prep/data-structures/size-of-the-set.chinese.md b/curriculum/challenges/chinese/08-coding-interview-prep/data-structures/size-of-the-set.chinese.md deleted file mode 100644 index 4bf7b927e0..0000000000 --- a/curriculum/challenges/chinese/08-coding-interview-prep/data-structures/size-of-the-set.chinese.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -id: 8d1923c8c441eddfaeb5bdef -title: Size of the Set -challengeType: 1 -videoUrl: '' -localeTitle: 套装的大小 ---- - -## Description -
在本练习中,我们将为Set创建一个size函数。此函数应命名为this.size ,它应返回集合的大小。
- -## Instructions -
-
- -## Tests -
- -```yml -tests: - - text: 您的Set类应该有一个size方法。 - testString: 'assert((function(){var test = new Set(); return (typeof test.size === "function")}()), "Your Set class should have a size method.");' - - text: size方法应返回集合中的元素数。 - testString: 'assert((function(){var test = new Set(); test.add("a");test.add("b");test.remove("a");return (test.size() === 1)}()), "The size method should return the number of elements in the collection.");' - -``` - -
- -## Challenge Seed -
- -
- -```js -function Set() { - // the var collection will hold the set - var collection = []; - // this method will check for the presence of an element and return true or false - this.has = function(element) { - return (collection.indexOf(element) !== -1); - }; - // this method will return all the values in the set - this.values = function() { - return collection; - }; - // this method will add an element to the set - this.add = function(element) { - if(!this.has(element)){ - collection.push(element); - return true; - } - return false; - }; - // this method will remove an element from a set - this.remove = function(element) { - if(this.has(element)){ - var index = collection.indexOf(element); - collection.splice(index,1); - return true; - } - return false; - }; - // change code below this line - // change code above this line -} - -``` - -
- - - -
- -## Solution -
- -```js -// solution required -``` -
diff --git a/curriculum/challenges/chinese/08-coding-interview-prep/rosetta-code/generatorexponential.chinese.md b/curriculum/challenges/chinese/08-coding-interview-prep/rosetta-code/generatorexponential.chinese.md deleted file mode 100644 index 00bfa26b87..0000000000 --- a/curriculum/challenges/chinese/08-coding-interview-prep/rosetta-code/generatorexponential.chinese.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: GeneratorExponential -id: 5a23c84252665b21eecc7e7b -challengeType: 5 -videoUrl: '' -localeTitle: GeneratorExponential ---- - -## Description -
生成器是一个可执行实体(如函数或过程),它包含一次生成一个值序列的代码,这样每次调用生成器时,都会提供序列中的下一个值。生成器通常构建在协同程序或对象之上,以便“自然地”处理对象的内部状态。生成器通常用于序列可能无限的情况,并且可以在只有最小状态的情况下构造序列的下一个值。编写一个使用生成器生成正方形和立方体的函数。创建一个新的生成器,从正方形生成器中过滤所有多维数据集。该函数应返回已过滤生成器的\(n ^ {th} \)值。例如,对于\(n = 7 \),函数应该返回81,因为序列将是4,9,16,25,36,49,81。这里64被过滤掉了,因为它是一个立方体。
- -## Instructions -
-
- -## Tests -
- -```yml -tests: - - text: exponentialGenerator应该是一个函数。 - testString: 'assert(typeof exponentialGenerator=="function","exponentialGenerator should be a function.");' - - text: exponentialGenerator()应该返回一个数字。 - testString: 'assert(typeof exponentialGenerator(10)=="number","exponentialGenerator() should return a number.");' - - text: exponentialGenerator(10)应该返回144 。 - testString: 'assert.equal(exponentialGenerator(10),144,"exponentialGenerator(10) should return 144.");' - - text: exponentialGenerator(12)应该返回196 。 - testString: 'assert.equal(exponentialGenerator(12),196,"exponentialGenerator(12) should return 196.");' - - text: exponentialGenerator(14)应该返回256 。 - testString: 'assert.equal(exponentialGenerator(14),256,"exponentialGenerator(14) should return 256.");' - - text: exponentialGenerator(20)应该返回484 。 - testString: 'assert.equal(exponentialGenerator(20),484,"exponentialGenerator(20) should return 484.");' - - text: exponentialGenerator(25)应该返回784 。 - testString: 'assert.equal(exponentialGenerator(25),784,"exponentialGenerator(25) should return 784.");' - -``` - -
- -## Challenge Seed -
- -
- -```js -function exponentialGenerator (n) { - // Good luck! -} - -``` - -
- - - -
- -## Solution -
- -```js -// solution required -``` -