我正在寻找一种检查密钥是否存在以及是否不创建密钥的单行方式.
var myObject = {};
//Anyway to do the following in a simpler fashion?
if (!('myKey' in myObject))
{
myObject['myKey'] = {};
}
Run Code Online (Sandbox Code Playgroud) 让我们假设我有json变量:
var obj = {"A":"a", "B":"b", "x":"y", "a":"b"}
Run Code Online (Sandbox Code Playgroud)
当我想引用A时,我只想写json.A
当我在变量中键入时如何做到,即:
var key = "A";
Run Code Online (Sandbox Code Playgroud)
是否有任何函数返回value或null(如果key不在json中)?
可能重复:
检查Javascript中是否存在关联数组键
我有一个PHP代码块.出于某种目的,我将其转换为JavaScript块.
我有PHP
if(array_key_exists($val['preferenceIDTmp'], $selected_pref_array[1]))
Run Code Online (Sandbox Code Playgroud)
现在我想在jQuery中这样做.有没有内置功能来做到这一点?
我正在尝试从现有对象中获取一些数据并将其分组为新对象.我遇到的问题是检查对象密钥是否存在,以便我可以创建一个新的,或将数据附加到现有的.
我发现了一些类似的问题,但没有一个答案有效,所以我有点卡住了.它总是最终发现它不存在并创建重复键.
我有以下代码,xxx我需要在哪里检查密钥是否存在:
var groups = [];
for (var i=0; i<something.length; i++) {
var group_key = 'group_'+something[i].group_id;
if (xxx) {
// New group
var group_details = {};
group_details[group_key] = {
group_name: something[i].group_name,
items: [
{ 'name': something[i].name }
]
};
groups.push(group_details);
} else {
// Existing group
groups[group_key].items.push({
'name': something[i].name
});
}
}
Run Code Online (Sandbox Code Playgroud)
在something我传递的,是非常简单的,基本的形式:
[
{
group_id: 3,
group_name: 'Group 3',
name: 'Cat'
},
{
group_id: 3,
group_name: 'Group 3',
name: 'Horse'
},
{
group_id: 5, …Run Code Online (Sandbox Code Playgroud) var arr = [{
key: "key1", value: "z"
}, {
key: "key2", value: "u"
}, {
...
}];
Run Code Online (Sandbox Code Playgroud)
如何检查我的key:"key1"存在是否已存在.如果它不存在,我需要在ma数组中添加密钥.
if(arr.hasOwnProperty("key1")){
arr.unshift({key:"key1", value:"z"});
}
Run Code Online (Sandbox Code Playgroud) 在Ruby中,查明字符串是否在数组(.include? x)中是非常慢的.如果将该数组更改为集合,则BAM可以快速查找.
在JavaScript中,没有集合,数组lookups(.indexOf(x) >= 0)也很慢,但我需要在脚本中执行10,000次这些查找.
我的Ruby版本(有套装)在0.125几秒钟内运行,我的JavaScript版本(在NodeJS中)需要29!
是否有任何设置库或更好的方法来执行可以在Ruby附近获得Javascript速度的数组查找?
编辑:将"对象"更改为"字符串"以清除任何混淆
我已经使用Java很长一段时间了,很长一段时间我一直在使用GWT(Google Web Toolkit)进行Web开发.它的美妙之处在于我拥有了面向Java对象的构造,并且不会担心它如何被转换为GWT - 让Google来处理它.我对Javascript的了解已经足够,但并不是因为我可以用它进行大量的Web开发.后来我决定我必须对Javascript有更深入和更彻底的了解,这是一个真正的过山车 - 只是在我认为我得到了一些东西,有些东西来证明我错了 - 我只是被误解了.
有什么比stackoverflow更能表达我的关注的地方:我正在寻找一些资源和指向什么是Javascript等同于以下一些Java概念:
Class
instance of a class - object
Member variables
Getters
Setters
Abstract Class
Interface
Inheritance
Access Modifiers
Constructors
Run Code Online (Sandbox Code Playgroud)
我知道其中一些概念,但正如我所说 - 我相信我有一些概念上的困难.如果有人可以指出一个真正的javascript大师试图在这里查明这些概念,我将非常高兴.
我试图访问JavaScript对象中的某个成员.为了做到这一点,我需要尝试几个关键值.
例如,Object['text/html']它将为我提供HTML文档的导出链接.但是,并非此类型的每个对象都具有text/html密钥对值.
在Python中,我将使用Try-Catch块解决此问题,但有KeyError例外.如果我可以在javascript中执行类似的操作,就像在Try-Catch块中使用异常一样,这将是很棒的.
但是,如果存在替代品而不是try catch块,那么确实达到了相同的最终目标,我也想了解它们.
我宁愿使用异常而不是使用函数.我这样做是因为text/html密钥可能不存在,但应该存在.一个例外似乎更适合这种情况
我试图找出给定的键是否存在于对象数组中。如果值键存在,那么我想返回 true 否则返回 false。
我从文本框中输入键,然后检查键是否存在于对象数组中,但我无法得到它。
这是我尝试过的
代码:
var obj = [{
"7364234":"hsjd",
"tom and jerry":"dsjdas",
"mickey mouse":"kfjskdsad",
"popeye the sailor man":"alkdsajd",
"the carribean":"kasjdsjad"
}]
var val = $("input[name='type_ahead_input']").val();
if (obj[val]) {
console.log('exists');
} else {
console.log('does not exist');
}
Run Code Online (Sandbox Code Playgroud)
如果我将输入作为the carribean对象数组中存在的' '给出,即使它在控制台中的输出也不存在。
我该如何解决这个问题?
在JavaScript中,您可以像这样获取XML节点的子节点......
var children = xml.childeNodes;
Run Code Online (Sandbox Code Playgroud)
我如何得到一个物体的孩子?
var obj = {
prop1: 'stuff',
prop2: 'things',
prop3: 'stuff-n-things'
}
Run Code Online (Sandbox Code Playgroud)
鉴于这样的对象..
var Obj = {
levelOneProp1: 'stuff',
levelOneProp2: 'things',
levelOneProp3: {
levelTwoProp1: 'moreStuff',
levelTwoProp2: 'morethings',
levelTwoProp3: 'morestuff-n-things'
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道哪些属性Obj有子,所以我可以以递归的方式循环它们.目标是能够提供一个(理论上)无限数量的孩子的数据集,并将他们的值应用于输入元素......这是我到目前为止所拥有的.
function applyData( dataSet ){
var hasChildren = false;
for(var i = 0; i < dataSet.childNodeArrayGoesHere.length; i++){
if(dataSet.detectChildNodesHere){
hasChildren = true;
}
}
if(hasChildren){
for(var j = 0; j < dataSet.childNodeArrayGoesHere.length; i++){
applyData(dataSet[j]);
}
} else {
//apply the key/value pair …Run Code Online (Sandbox Code Playgroud)