相关疑难解决方法(0)

如何检查数组是否包含JavaScript中的对象?

找出JavaScript数组是否包含对象的最简洁有效的方法是什么?

这是我知道的唯一方法:

function contains(a, obj) {
    for (var i = 0; i < a.length; i++) {
        if (a[i] === obj) {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好,更简洁的方法来实现这一目标?

这与Stack Overflow问题密切相关问题在JavaScript数组中查找项目的最佳方法是什么?它使用的方法寻找数组中的对象indexOf.

javascript arrays algorithm time-complexity javascript-objects

3778
推荐指数
37
解决办法
241万
查看次数

JavaScript中的所有falsey值

JavaScript中的值是什么'falsey',这意味着它们在表达式中评估为false if(value),value ?并且!value


关于Stack Overflow上的falsey值的目的已有一些讨论,但没有详尽的完整答案列出所有的falsey值.

我在MDN JavaScript Reference上找不到任何完整列表,我很惊讶地发现在JavaScript中查找完整,权威的虚假值列表时的最佳结果是博客文章,其中一些有明显的遗漏(例如,NaN),并且没有一个像Stack Overflow这样的格式,可以添加评论或替代答案来指出怪癖,惊喜,遗漏,错误或警告.因此,制作一个似乎是有意义的.

javascript

193
推荐指数
1
解决办法
7万
查看次数

为什么扩展本机对象是一种不好的做法?

每个JS意见领袖都说扩展原生对象是一种不好的做法.但为什么?我们是否获得了性能?他们是否害怕有人以"错误的方式"做到这一点,并添加了可枚举的类型Object,几乎破坏了任何对象上的所有循环?

TJ Holowaychukshould.js为例.他增加了一个简单的getterObject,一切工作正常(来源).

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)

是否有任何反对扩展本机类型的论据?

javascript prototype prototypal-inheritance

121
推荐指数
7
解决办法
3万
查看次数

Javascript ES6计算/时间复杂的集合

密钥集合(Set,Map,WeakSet和WeakMap)的ES6规范提供了什么时间复杂度(以大O表示法)?

我的期望,并且我希望大多数开发人员都希望,规范和实现将使用广泛接受的性能算法,在这种情况下Set.prototype.has,add并且delete在一般情况下都是O(1).相同的MapWeak–等价物.

对于我来说,实现的时间复杂性是否是强制性的,例如在ECMAScript 2015语言规范 - 第6版 - 23.2设置对象中,这一点并不完全清楚.

除非我误解它(我当然很可能),看起来ECMA规范要求实现(例如Set.prototype.has)使用线性时间(O(n))算法.令我非常惊讶的是,规范中不会强制要求甚至不允许使用更高性能的算法,我会对为什么会出现这种情况的解释非常感兴趣.

javascript time-complexity ecmascript-6

65
推荐指数
3
解决办法
2万
查看次数

Javascript:将一个值与多个值进行比较的最漂亮的方法

什么是将一个值与多个选项进行比较的最漂亮的方法?

我知道有很多方法可以做到这一点,但我正在寻找最好的方法.

我问,因为我希望这是可行的(当你看它时,它显然不是这样):

if (foobar == (foo||bar) ) {
     //do something
}
Run Code Online (Sandbox Code Playgroud)

javascript comparison

59
推荐指数
6
解决办法
9万
查看次数

JavaScript:检查变量是否等于两个或更多值的简单方法?

是否有更简单的方法来确定变量是否等于一系列值,例如:

if x === 5 || 6 
Run Code Online (Sandbox Code Playgroud)

而不是像以下那样钝的东西:

if x === 5 || x === 6
Run Code Online (Sandbox Code Playgroud)

javascript comparison

45
推荐指数
4
解决办法
3万
查看次数

简明的方法来比较多个值

考虑以下:

var a = 'jesus';

if(a == 'something' || a == 'nothing' || a=='anything' || a=='everything'){
   alert('Who cares?');
}
Run Code Online (Sandbox Code Playgroud)

有没有办法缩短它?

Javascript中有什么东西if (a=='bbb'||'ccc')吗?

另外,jQuery可以在这里帮忙吗?

javascript jquery

38
推荐指数
5
解决办法
2万
查看次数

在javascript中链接逻辑运算符的简短手?

有没有更好的方法在javascript中编写以下条件?

if ( value == 1 || value == 16 || value == -500 || value == 42.42 || value == 'something' ) {
  // blah blah blah
}
Run Code Online (Sandbox Code Playgroud)

我讨厌把所有这些逻辑OR串在一起.我想知道是否有某种速记.

谢谢!

javascript if-statement logical-operators

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

if条件的Javascript格式

可能重复:
针对值列表检查变量相等性
Javascript:使用OR操作数将SINGLE值与MULTIPLE值进行比较

首先,我是javascript方面的新手.请告诉我有没有简单的方法来形成以下代码.

if( fileName== 'doc' || fileName=='docx' || fileName=='xls' || fileName=='xlsx' || fileName=='ppt' || fileName=='pdf' ){

Do something

} else{

    Do something

}
Run Code Online (Sandbox Code Playgroud)

javascript jquery

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

将多个值与同一变量进行比较

我有一长串字符串可以与同一个变量进行比较.

有没有更短的方法来做到这一点?

if(val=="kivi" || val=="apples" || val=="lychee" || val=="banana.C" || val=="mangos")
Run Code Online (Sandbox Code Playgroud)

javascript jquery

5
推荐指数
2
解决办法
1708
查看次数