据我所知,有没有associative arrays在javascript,只是objects.
但是,我可以像这样array使用字符串键创建bracket notation:
var myArray = [];
myArray['a'] = 200;
myArray['b'] = 300;
console.log(myArray); //prints [a: 200, b: 300]
Run Code Online (Sandbox Code Playgroud)
所以,我想在不使用的情况下做同样的事情 bracket notation
var myNewArray = [a: 200, b: 300]; //getting error - Unexpected token:
Run Code Online (Sandbox Code Playgroud)
这也行不通
var myNewArray = ['a': 200, 'b': 300]; //same error, why can I not create?
Run Code Online (Sandbox Code Playgroud) 我在最近的一次采访中被问到这个问题.
您将获得一个包含一百万个元素的数组.所有元素都是重复的,除了一个.我的任务是找到独特的元素.
var arr = [3, 4, 3, 2, 2, 6, 7, 2, 3........]
Run Code Online (Sandbox Code Playgroud)
我的做法是要经过在整个数组for循环,然后创建一个map索引作为number数组中和value的frequency数组中出现的次数.然后再次遍历我们的地图并返回值为1的索引.
我说我的方法需要O(n)时间复杂.面试官告诉我要以不太O(n)复杂的方式优化它.我说我们不能,因为我们必须通过一百万个元素来完成整个阵列.
最后,他似乎并不满意,并转向下一个问题.
我理解在数组中经历数百万个元素是昂贵的,但是如果不对整个数组进行线性扫描,我们怎么能找到一个独特的元素呢?
PS:数组未排序.
当我运行下面的代码时 - 我收到警告"缩小从int到long的无符号int转换{}在C++ 11 [#Wnarrowing]中是不正确的.我正在使用GNU 4.8编译器.
typedef struct TableEntry
{
unsigned long value;
const char *label;
} TableEntry;
enum FunctionType
{
NORMAL = 0,
RANGE = 1
};
TableEntry functionTypes[] =
{
{NORMAL, "NORMAL"},
{RANGE, "RANGE"}
};
Run Code Online (Sandbox Code Playgroud)
我不明白为什么编译器将enum视为int?
这是GCC 4.8中的错误吗?有没有解决方法?任何帮助表示赞赏.
我得到了这样一个数组:
$input = array(-1,1,3,-2,2, 3,4,-4);
Run Code Online (Sandbox Code Playgroud)
我需要对它进行排序,使得负整数位于前面,正整数位于后面,相对位置不应该改变.所以输出应该是:
$output = array(-1 ,-2,-4, 1,3,2,3,4);
Run Code Online (Sandbox Code Playgroud)
我试过这个usort,但我无法保留相对位置.
function cmp ($a, $b)
{
return $a - $b;
}
usort($input, "cmp");
echo '<pre>', print_r($input), '</pre>';
Array
(
[0] => -4
[1] => -2
[2] => -1
[3] => 1
[4] => 2
[5] => 3
[6] => 3
[7] => 4
)
Run Code Online (Sandbox Code Playgroud) 我有一系列的承诺和每个承诺电话http.get().
var items = ["URL1", "URL2", "URL3"];
var promises = [];
//on each URL in items array, I want to create a promise and call http.get
items.forEach(function(el){
return promises.push($http.get(el));
});
var all = $q.all(promises);
all.then(function success(data){
console.log(data);
}).catch(function(reason){
console.log("reason is", reason);
});
Run Code Online (Sandbox Code Playgroud)
在我的情况下发生了什么
URL2.get没有得到解决,它立即触发catch()了$q.all.由于这种失败,all.then()永远不会被调用.
我想要的是
即使其中一项承诺遭到拒绝,我也希望所有的承诺能够继续下去.
我发现了一个类似的帖子,但解决方案建议使用另一个名为Kris Kowal的Q的角度蛋糕.所以我想知道如何在不使用外部包的情况下实现它?
我想计算一个字符串中所有字母的出现频率。说我有
$str = "cdcdcdcdeeeef";
Run Code Online (Sandbox Code Playgroud)
我可以使用str_split和array_count_values实现此目的。
array_count_values(str_split($str));
Run Code Online (Sandbox Code Playgroud)
想知道是否还有另一种方法可以将字符串转换为数组吗?谢谢
我有一个像这样的地图,枚举为关键,UINT为值.
#include <iostream>
#include <string>
#include <map>
using namespace std;
typedef enum tcGroup_t
{
CG_NONE = 0,
CG_BASE = 1,
CG_RC = 3,
CG_HTD = 4,
CG_HID = 5
} tcGroup;
int getMaxtcGroupCount()
{
std::map<tcGroup, UINT> maxTcGroup;
maxTcGroup [CG_BASE] = 2;
maxTcGroup [CG_HID] = 33;
maxTcGroup [CG_HTD] = 44;
maxTcGroup [CG_RC] = 87;
maxTcGroup [CG_NONE] = 39;
}
Run Code Online (Sandbox Code Playgroud)
基本上,我想将地图中的最高值返回给调用函数.在上面的例子中,我想返回值87.我知道地图是通过Key排序的,但在我的情况下,我想要返回地图中的最高值?
任何帮助表示赞赏.谢谢