假设我有一个像这样的函数:
function validator(obj){
const ret = {};
for (const key in obj){
// Returns a boolean
result = validate(key, obj[key]);
if (result !== true)
ret.error = true;
ret[key] = result;
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
这个函数将返回一个对象,对象的内容根据传递给函数的参数动态填充。
我可以像这样记录函数:
/**
* @param {Object.<string, *>} obj
* @returns {Object.<string, boolean>}
*/
Run Code Online (Sandbox Code Playgroud)
但它没有记录.error也将返回布尔值的动态属性。
如果它会返回,我可以简单地写:
/**
* @param {Object.<string, *>} obj
* @returns {{error: boolean}}
*/
Run Code Online (Sandbox Code Playgroud)
但是现在它没有记录动态属性。
我能想到的事情是这样的:
/**
* @param {Object.<string, *>} obj
* @returns {Object.<string, boolean>|{error: boolean}}
*/
Run Code Online (Sandbox Code Playgroud)
虽然它有效,但在我看来它在语法上并不正确。我不能使用,@typedef因为当我已经知道将使用什么属性时应该使用它。
我在 …
我必须根据具有多个属性的当前日期时间,按照开始日期时间进行排序。例如,我有以下列表:
<ul>
<li data-startDate="09-04-2019 15:00" data-inplay=false>Name1</li>
<li data-startDate="09-04-2019 15:30" data-inplay=false>Name2</li>
<li data-startDate="09-04-2019 15:20" data-inplay=false>Name3</li>
<li data-startDate="09-04-2019 16:00" data-inplay=false>Name4</li>
<li data-startDate="09-04-2019 15:00" data-inplay=true> Name5</li>
<li data-startDate="09-04-2019 15:10" data-inplay=false>Name6</li>
<li data-startDate="09-04-2019 15:05" data-inplay=true> Name7</li>
<li data-startDate="08-04-2019 12:05" data-inplay=false>Name8</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
当前日期时间为09-04-2019 15:15,所需的输出应为:
<ul>
<li data-startDate="09-04-2019 15:00" data-inplay=false>Name1</li>
<li data-startDate="09-04-2019 15:30" data-inplay=false>Name2</li>
<li data-startDate="09-04-2019 15:20" data-inplay=false>Name3</li>
<li data-startDate="09-04-2019 16:00" data-inplay=false>Name4</li>
<li data-startDate="09-04-2019 15:00" data-inplay=true> Name5</li>
<li data-startDate="09-04-2019 15:10" data-inplay=false>Name6</li>
<li data-startDate="09-04-2019 15:05" data-inplay=true> Name7</li>
<li data-startDate="08-04-2019 12:05" data-inplay=false>Name8</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我尝试过此方法,但不包含游戏内参数,而且排序也不正确
var list = $("ul …Run Code Online (Sandbox Code Playgroud) 我有一个webpack.config.js这样的:
/* Something here */\n\nmodule.exports = {\n entry: {\n main: './src/index.js'\n },\n output: {\n library: 'MyClass',\n libraryTarget: 'umd',\n path: path.resolve(__dirname, 'lib'),\n filename: `package.js`\n },\n ...\n}\nRun Code Online (Sandbox Code Playgroud)\n我的./src/index.js看起来像这样:
import MyClass from 'src/myClass'\nimport 'src/myStyle.css'\n\nexport default MyClass\nRun Code Online (Sandbox Code Playgroud)\n虽然这工作正常,但它将MyClass类暴露给window对象:
console.log(window.MyClass)\n=> Module {default: \xc6\x92, __esModule: true, Symbol(Symbol.toStringTag): "Module"}\nRun Code Online (Sandbox Code Playgroud)\n这样,我就无法使用以下方式调用我的类:
\nnew MyClass();\n=> TypeError: MyClass is not a constructor\nRun Code Online (Sandbox Code Playgroud)\n我必须像这样调用它:
\nnew MyClass.default();\n=> MyClass { ... }\nRun Code Online (Sandbox Code Playgroud)\n … 给定此代码,例如:
// src/index.ts
export function hello(props: {
type: 'boolean';
params: {
bool: boolean;
}
}): void;
export function hello(props: {
type: 'string';
params: {
str: string;
num: number;
}
}): void;
export function hello(props: {
type?: any;
params?: any;
}): void {
console.log(props);
}
// index.ts
import { hello } from './src';
hello({
type: 'string', /* autosuggests 'string' and 'boolean' */
params: {
/* autosuggests `str` and `num` (not `bool`) as property options, which is correct and expected */
} …Run Code Online (Sandbox Code Playgroud) intellisense typescript visual-studio-code typescript-typings
问题很简单,document.getElementsByTagName('*')没有选择 SVG 标签,并且在控制台中出现错误。
但是,如果我删除了 SVG 标签,则可以正常工作。
我的代码:
var Master = document.getElementsByTagName('*');
/* NOT WORKING TOO
var Master = document.getElementsByTagName('body')[0].getElementsByTagName('*');
var Master = document.querySelectorAll('*');
*/
var Vector = [];
for (var i=0; i < Master.length; i++){
Master[i].className = Master[i].className.trim();
console.log("Class > " + Master[i].className);
if (Master[i].className != ""){
var chaps = Master[i].className.split(/\s+/);
for (var j=0; j < chaps.length; j++){
Vector.push(chaps[j]);
}
}
}
//console.log(Vector);Run Code Online (Sandbox Code Playgroud)
<section class="classMaster">
<h1 class="title-1"><b>Title:</b> Anyone</h1>
<h2 class="title-2">Title T2</h2>
<p class="parrafe"><b>Strong:</b> Year 2019.<p/>
<p class="parrafe"><b>Text:</b> Everybody.</p> …Run Code Online (Sandbox Code Playgroud)我知道我们可以这样做:
const a = { b: 1, c: 2 }
const A = { ...a };
// A { b: 1, c: 2 }
Run Code Online (Sandbox Code Playgroud)
但是我们如何使用这种方法将数据传递为this值呢?
例如我们有一个class A {}并且想要动态地将对象属性设置为this. 通常的方法是使用Object.defineProperties可能for...in循环:
const a = { b: 1, c: 2 }
class A {
constructor(obj){
for (const k in obj)
Object.defineProperty(this, k, { value: obj[k] });
}
}
new A(a);
// A { b: 1, c: 2 }
Run Code Online (Sandbox Code Playgroud)
所以我在想,既然我们现在有了语法糖,我们如何将它用于上面的例子?
编辑
我在这里谈论扩展运算符语法 …
我正在尝试解决一个方程,在该方程中,我从索引后的数组列表中添加数字。
列表的每个数组都是随机生成的 4 个数字的固定长度数组,如下所示:
const list = [
[2, 9, 1, 2],
[2, 3, 9, 4],
[4, 7, 8, 1]
]
Run Code Online (Sandbox Code Playgroud)
所以我想要做的是从每个数组中获取每个索引的每个数字的总和。像这样:
const list = [
[2, 9, 1, 2],
[2, 3, 9, 4],
[4, 7, 8, 1]
]
// expectedResult = [8, 19, 18, 7];
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我想做一个数学游戏,随机生成数字和运算符。
这是提示- x = Math.floor(Math.random()*101);将生成一个0到100之间的随机数。(+,*,-)为每个方程式随机选择运算符。请任何人可以帮助我。
var arr = []
while(arr.length < 8){
var r = Math.floor(Math.random()*100) + 1;
if(arr.indexOf(r) === -1) arr.push(r);
}
document.write(arr);Run Code Online (Sandbox Code Playgroud)
javascript ×7
arrays ×1
comments ×1
dom ×1
ecmascript-6 ×1
intellisense ×1
jsdoc ×1
math ×1
sorting ×1
typescript ×1
webpack ×1