我有一个JavaScript数组,如:
[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]
Run Code Online (Sandbox Code Playgroud)
我将如何将单独的内部数组合并为:
["$6", "$12", "$25", ...]
Run Code Online (Sandbox Code Playgroud) 每个JS意见领袖都说扩展原生对象是一种不好的做法.但为什么?我们是否获得了性能?他们是否害怕有人以"错误的方式"做到这一点,并添加了可枚举的类型Object,几乎破坏了任何对象上的所有循环?
以TJ Holowaychuk的should.js为例.他增加了一个简单的getter来Object,一切工作正常(来源).
Object.defineProperty(Object.prototype, 'should', {
set: function(){},
get: function(){
return new Assertion(Object(this).valueOf());
},
configurable: true
});
Run Code Online (Sandbox Code Playgroud)
这真的很有道理.例如,可以扩展Array.
Array.defineProperty(Array.prototype, "remove", {
set: function(){},
get: function(){
return removeArrayElement.bind(this);
}
});
var arr = [0, 1, 2, 3, 4];
arr.remove(3);
Run Code Online (Sandbox Code Playgroud)
是否有任何反对扩展本机类型的论据?
如何从一系列日期中找出最小和最大日期?目前,我正在创建一个这样的数组:
var dates = [];
dates.push(new Date("2011/06/25"))
dates.push(new Date("2011/06/26"))
dates.push(new Date("2011/06/27"))
dates.push(new Date("2011/06/28"))
Run Code Online (Sandbox Code Playgroud)
是否有内置函数来执行此操作,还是我自己编写?
Math.max.apply()工作怎么样?
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<script>
var list = ["12","23","100","34","56",
"9","233"];
console.log(Math.max.apply(Math,list));
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max
上面的代码在List中找到Max number.任何人都可以告诉我下面的代码是如何工作的?如果我通过它似乎有效null or Math.
console.log(Math.max.apply(Math,list));
Run Code Online (Sandbox Code Playgroud)
是否所有user-defined/Native functions有可以使用的电话和申请方法?
我是一名PHP开发人员,我一直认为微优化不值得花时间.如果你真的需要额外的性能,你可以编写你的软件,使其在架构上更快,或者你编写一个C++扩展来处理慢速任务(或者更好的是,使用HipHop编译代码).然而,今天一位工作伙伴告诉我,这有很大的不同
is_array($array)
Run Code Online (Sandbox Code Playgroud)
和
$array === (array) $array
Run Code Online (Sandbox Code Playgroud)
而且我就像"呃,这真是一个毫无意义的比较",但他不同意我的看法......他是我们公司最好的开发人员,并且负责一个每天大约有5000万次SQL查询的网站 - - 例如.所以,我在这里想知道:他可能是错的还是微优化真的值得花时间和时间?
我正在尝试使用reduce()"整理"顺序组合一组数组,因此具有相似索引的项目在一起.例如:
input = [["one","two","three"],["uno","dos"],["1","2","3","4"],["first","second","third"]]
output = [ 'first','1','uno','one','second','2','dos','two','third','3','three','4' ]
Run Code Online (Sandbox Code Playgroud)
只要它们在一起,具有相似索引的项目的顺序无关紧要,因此结果'one','uno','1'...是如上所述.我想尽可能使用不可变变量.
我有办法:
const output = input.reduce((accumulator, currentArray, arrayIndex)=>{
currentArray.forEach((item,itemIndex)=>{
const newIndex = itemIndex*(arrayIndex+1);
accumulator.splice(newIndex<accumulator.length?newIndex:accumulator.length,0,item);
})
return accumulator;
})
Run Code Online (Sandbox Code Playgroud)
但它不是很漂亮而且我不喜欢它,特别是因为它在forEach方法中改变累加器的方式.我觉得必须有一个更优雅的方法.
我不敢相信之前没有人问过这个问题,但是我尝试了一堆不同的查询而无法找到它,所以请告诉我它是否在那里而我错过了它.有没有更好的办法?
为了澄清评论中的每个问题,我希望能够在不改变任何变量或数组的情况下执行此操作,因为我正在使用accumulator.splice和仅使用函数方法,例如.map,或者.reduce不使用类似的变异循环.forEach.
我正在尝试创建一个JavaScript函数,它从外部JSON中的数组中获取信息,然后获取其中一个JSON变量的最大值(或前5个值).对于这个例子,假设我想获得值"ppg"的最大值.这是一个小数组样本:
[
{
"player" : "Andre Drummond",
"team" : "Detroit Pistons",
"ppg" : "15.4",
"rpg" : "11.6",
"apg" : "2.4",
"bpg" : "1.6",
"spg" : "0.8",
"3pg" : "0.1"
},
{
"player" : "Anthony Davis",
"team" : "New Orleans Pelicans",
"ppg" : "16.4",
"rpg" : "13.6",
"apg" : "2.6",
"bpg" : "3.5",
"spg" : "1.2",
"3pg" : "0.1"
},
{
"player" : "Carmelo Anthony",
"team" : "New York Knicks",
"ppg" : "27.4",
"rpg" : "5.4",
"apg" : "4.5",
"bpg" : …Run Code Online (Sandbox Code Playgroud) 在Coursera的普林斯顿教程中,讲师解释了遇到的常见增长顺序函数.他说线性和线性运行时间是"我们努力的",他的推理是随着输入尺寸的增加,运行时间也增加.我认为这是他犯了一个错误的地方,因为我之前听过他提到线性增长顺序对于一个有效的算法是不能令人满意的.
在他讲话时,他还展示了绘制不同运行时间的图表 - 恒定和对数运行时间看起来效率更高.这是一个错误,还是这个?
我有一个看起来像这样的对象:
peaks =
0: {intervalId: 7, time: 1520290800000, value: 54.95125000000001}
1: {intervalId: 7, time: 1520377200000, value: 49.01083333333333}
Run Code Online (Sandbox Code Playgroud)
等等。
我如何发现peak它Max有价值?我试着这样做
this.loadPeak = peaks.map(a => Math.max(a.value));
Run Code Online (Sandbox Code Playgroud)
但我只是得到了一堆峰值数组value(而不是所有的 intervalId、时间、值)而不是最大值。
**非常感谢大家,每个解决方案都有效,遗憾的是不能全部接受。**
我有一系列对象。这些对象有一个属性 id。我需要一个返回下一个可用 id 的函数(对象未使用该 id)。
array = [{ id: 1 }, { id: 2 }, { id: 5 }, { id: 3 }];
Run Code Online (Sandbox Code Playgroud)
我想要一个函数,它接受一个数组作为输入并返回一个数字(这是下一个空闲 ID)。
在示例情况中:
findFreeId(array) {
*magic happens*
}
// result = 4
Run Code Online (Sandbox Code Playgroud) 我需要在JavaScript中执行C#中的内容:
var latest = versions.OrderByDescending( v => v.VersionNo).First();
Run Code Online (Sandbox Code Playgroud)
我希望通过Math.max方法完成这项工作,虽然这应该是一项微不足道的任务,但我正在努力使其正确.我已经浏览了网页和几个问题,但无法使其发挥作用.
在一个对象数组中,我想选择其中一个字段中具有最大值的对象.
我得到了如何选择值本身:
Math.max.apply(Math, list.map(function (o) { return o.DisplayAQI; }))
Run Code Online (Sandbox Code Playgroud)
...但我不知道如何做以上但返回对象本身.
javascript ×10
arrays ×4
algorithm ×2
typescript ×2
angular ×1
apply ×1
big-o ×1
date ×1
flatten ×1
function ×1
jquery ×1
json ×1
math ×1
object ×1
optimization ×1
performance ×1
php ×1
prototype ×1
sorting ×1