相关疑难解决方法(0)

扩展语法与切片方法

我试图了解以下方法中扩展语法与切片方法之间的区别.

假设我想制作一个数组的实际副本,我可以使用扩展语法轻松地做到这一点

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 slice spread-syntax

14
推荐指数
4
解决办法
3928
查看次数

对于Javascript对象,类似于SQL'JOIN'?

对于表示为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 arrays join

6
推荐指数
2
解决办法
5362
查看次数

在Javascript中的截断词后截断字符串

我想在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

请指出我需要更改的地方。谢谢

javascript

3
推荐指数
1
解决办法
79
查看次数

突变何时会成为副作用?

我遇到了以下有关如何终止未标记为功能的reduce的文章,但包含了很多有关数组突变为功能的问题。

主要答复突变数组提前打破迭代出来,但阵列可以很容易地推回拼接项目,有点暧昧的解决方案,可以说是不是在所有的功能可以恢复到原来的状态。

但是,如果可以对项目进行修改(变异),则许多算法都将获得显着优势。

对于Javascript(单线程(无工作程序),无代理),如果修改只是暂时存在,是否将其视为变异?或者函数返回后,突变是否只是副作用。

以下功能是增效剂吗?

function mutateAndRepair(arr) {  // arr is an array of numbers
    arr[0]++;
    arr[0]--;
}
Run Code Online (Sandbox Code Playgroud)
  • 该数组包含1个或多个项目。
  • 数组的第一项(索引0)是最大安全整数范围内的数字。
  • 该数组不是共享缓冲区
  • 代理未监视该阵列

我认为这不是变异,因为变异仅在函数执行时存在,并且由于JS阻止,因此没有其他代码能够看到变异,因此没有副作用。

考虑到约束条件是否符合JavaScript编码人员使用的通用功能范例?

javascript functional-programming

2
推荐指数
1
解决办法
86
查看次数

约简到底是什么呢,而无法在Javascript中突破呢?

为什么我不能突破reduceJava语言?

似乎简单return甚至throw根本不会破坏它。究竟为什么需要遍历所有值?

javascript

1
推荐指数
1
解决办法
72
查看次数