我试图了解以下方法中扩展语法与切片方法之间的区别.
假设我想制作一个数组的实际副本,我可以使用扩展语法轻松地做到这一点
var fruits = ["Banana", "Chips" , "Orange", "Lemon", "Apple", "Mango"]
var newCitrus = [...fruits]
Run Code Online (Sandbox Code Playgroud)
如果我console.log这个
["Banana", "Chips", "Orange", "Lemon", "Apple", "Mango"]
Run Code Online (Sandbox Code Playgroud)
但我也可以使用切片方法创建一个数组的副本.考虑到上面的相同数组,如果我做这样的事情......
var citrus = fruits.slice(0);
Run Code Online (Sandbox Code Playgroud)
然后控制台记录它,它将给我完全相同的数组,我将通过传播语法
["Banana", "Chips", "Orange", "Lemon", "Apple", "Mango"]
Run Code Online (Sandbox Code Playgroud)
由于它们都需要大约相同的时间来编码/写入,这有什么区别?我通常应该选择哪种方法?
对于表示为Javascript对象数组的表,SQL'JOIN'的实用模拟是什么?Javascript Array.join和D3.js'd3.merge`不是同一个概念.
比如SELECT * FROM authors LEFT JOIN books ON authors.id = books.author_id?
第一张表:
var authors =
[ { id: 1, name: 'adam'},
{ id: 2, name: 'bob'},
{ id: 3, name: 'charlie'}, ...
]
Run Code Online (Sandbox Code Playgroud)
第二表:
var books =
[ { author_id: 1, title: 'Coloring for beginners'},
{ author_id: 1, title: 'Advanced coloring'},
{ author_id: 2, title: '50 Hikes in New England'},
{ author_id: 2, title: '50 Hikes in Illinois'},
{ author_id: 3, title: 'String Theory for …Run Code Online (Sandbox Code Playgroud) 我想在javascript中某些字符长度后截断字符串。当达到字符长度时,不应在单词中间切入字符串,而应将单词补全,然后截断字符串。我尝试过的直到现在都在切割词之前切割了字符串。我想在返回的字符串中包含切割词。这是我的代码:
function truncateString(yourString, maxLength) {
var trimmedString = yourString.substr(0, maxLength);
trimmedString = trimmedString.substr(0, Math.min(trimmedString.length, trimmedString.lastIndexOf(" ")));
return trimmedString;
}
Run Code Online (Sandbox Code Playgroud)
现在,当我使用以下参数调用此函数时:
truncateString('The quick brown fox jumps over the lazy dog',6)
Run Code Online (Sandbox Code Playgroud)
输出为'The' rather than 'The quick。
请指出我需要更改的地方。谢谢
我遇到了以下有关如何终止未标记为功能的reduce的文章,但包含了很多有关数组突变为功能的问题。
在主要答复突变数组提前打破迭代出来,但阵列可以很容易地推回拼接项目,有点暧昧的解决方案,可以说是不是在所有的功能可以恢复到原来的状态。
但是,如果可以对项目进行修改(变异),则许多算法都将获得显着优势。
对于Javascript(单线程(无工作程序),无代理),如果修改只是暂时存在,是否将其视为变异?或者函数返回后,突变是否只是副作用。
以下功能是增效剂吗?
function mutateAndRepair(arr) { // arr is an array of numbers
arr[0]++;
arr[0]--;
}
Run Code Online (Sandbox Code Playgroud)
我认为这不是变异,因为变异仅在函数执行时存在,并且由于JS阻止,因此没有其他代码能够看到变异,因此没有副作用。
考虑到约束条件是否符合JavaScript编码人员使用的通用功能范例?
为什么我不能突破reduceJava语言?
似乎简单return甚至throw根本不会破坏它。究竟为什么需要遍历所有值?