标签: javascript-objects

javascript关联数组的长度

我有一个js关联数组(或者有些人可能更愿意把它称为对象),比如说

var quesArr=new Array();
quesArr["q101"]="Your name?";
quesArr["q102"]="Your age?";
quesArr["q103"]="Your school?";
Run Code Online (Sandbox Code Playgroud)

是否有任何内置函数可以获得此数组的长度,或jQuery或其他库中的任何解决方案?目前quesArr.length会给出0,因为你们大多数人都必须知道.

请不要像在这个问题中提到的那样建议迭代整个数组/对象,因为我拥有的数组/对象非常大.

有什么方法可以继续吗?

javascript arrays javascript-objects

60
推荐指数
2
解决办法
7万
查看次数

Underscore.js:使用对象中的键创建对象列表中的地图

我正在使用优秀的Underscore.js库.我有一个特定的任务,我可以使用JavaScript或jQuery做得很好但是想知道在Underscore中是否有某种抽象可以让我错过了.

基本上我有一个像这样的对象 -

var some_object_array = [{id: "a", val: 55}, {id: "b", val: 1}, {id: "c", val: 45}];
Run Code Online (Sandbox Code Playgroud)

我想把它转换成 -

var some_map = {"a": {id: "a", val: 55}, "b": {id: "b", val: 1}, "c": {id: "c", val: 45}};
Run Code Online (Sandbox Code Playgroud)

我知道我可以用_.groupBy(some_object_array, "id").但这会返回如此的地图 -

var some_grouped_map = {"a": [{id: "a", val: 55}], "b": [{id: "b", val: 1}], "c": [{id: "c", val: 45}]};
Run Code Online (Sandbox Code Playgroud)

请注意,这会做广告宣传的内容.但是我希望自己some_map不用迭代对象.

任何帮助赞赏.

javascript javascript-objects underscore.js

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

展平javascript对象以作为查询字符串传递

我有一个javascript对象,我需要展平成一个字符串,以便我可以作为查询字符串传递,我该怎么做?即:

{ cost: 12345, insertBy: 'testUser' } 会成为 cost=12345&insertBy=testUser

我不能使用jQuery AJAX调用这个调用,我知道我们可以使用它并传递对象,data但不是在这种情况下.然而,使用jQuery来展平对象是可以的.

谢谢.

javascript jquery flatten javascript-objects

54
推荐指数
6
解决办法
5万
查看次数

使用保留字作为属性名称,重新访问

可以Object用作对象的属性名称吗?

这个问题是间接提出的一个stackoverflow问题.答案似乎是@Squeegy的普遍共识:

你可以使用这些单词,但只能作为字符串而不是速记属性 - HTMLElement很酷,而obj["word"]不是
有助于提供保留字列表的链接

虽然我认为@Squeeky在这个领域可能比我更有知识,但在某些情况下使用保留词可能是个坏主意,我认为他的结论基于两点是错误的:

  • 使用它们作为"速记"属性来测试保留字

  • 在HTMLFormElement使得它不可能以"速记"使用保留字

首先,使用保留字列表,每个都作为属性添加到obj.wordobj["word"],并作为obj.word<input name='typeof' value='scalar' />,然后作为form.typeof和检索Object.在所有63个案例中,所有8个测试都正常工作.

其次,HTMLFormElement需要这样做,因为它使用简写表示法在其元素中检索.如果HTMLElement是表单的元素,则obj["word"]=="标量".

根据我的经验,保留字通常是数据(例如,名为"私人"的列),而不是程序造成的.因此,它们会污染JSON对象,并从那里污染INPUT,然后从那里污染HTMLFormElement.简单地说,没有大量(不需要的)工作,就不可能保留保留的单词被强制用于速记.

在我看来这些真正的问题:

  • 需要注意不要与现有财产发生冲突,而不是保留字

  • (很多,如果不是全部)变量不能保留字

  • 使用保留字作为属性可能(但不一定)令人困惑

这个结论是否正确,保留字作为属性名称,并以字符串或简写形式访问它们就好了 - 只要对情况应用一点常识?

javascript json properties reserved-words javascript-objects

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

如何正确设置JavaScript命名空间和类?

似乎有很多方法来设置JavaScript应用程序,因此对于哪一个是正确的还是最好的而言令人困惑.以下技术或更好的方法有什么不同吗?

MyNamespace.MyClass = {
    someProperty: 5,
    anotherProperty: false,

    init: function () {
        //do initialization
    },

    someFunction: function () {
        //do something
    }
};

$(function () {
    MyNamespace.MyClass.init();
});
Run Code Online (Sandbox Code Playgroud)

其他方式:

MyNamespace.MyClass = (function () {
    var someProperty = 5;
    var anotherProperty = false;

    var init = function () {
        //do something
    };

    var someFunction = function () {
        //do something
    };

    return {
        someProperty: someProperty
        anotherProperty: anotherProperty
        init: init
        someFunction: someFunction
    };
}());

MyNamespace.MyClass.init();
Run Code Online (Sandbox Code Playgroud)

第一种技术感觉更像是一门课.如果这有所不同,我来自服务器端背景.第二种技术似乎更冗余,有点尴尬,但我看到这也使用了很多.有人可以帮助解决一些问题并建议前进的最佳方式吗?我想创建一个有很多类相互交流的应用程序.

javascript oop javascript-framework javascript-objects javascript-namespaces

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

将对象传递给javascript函数

我最近在我的网站上乱搞jQuery,而且我对Javascript的了解相当有限.我开始喜欢jQuery能够将变量传递给花括号内的jQuery函数,如下所示:

$(somediv).animate({thisisone: 1, thisistwo: 2}, thisisavar);
Run Code Online (Sandbox Code Playgroud)

我想知道的是我如何编写一个Javascript函数,我可以将项目传递到花括号内?我知道你可以编写这样的函数:

function someName(var1, var2, var3...) {

}
Run Code Online (Sandbox Code Playgroud)

但这不支持括号?我也知道你不能添加任何参数并执行此操作:

function accident() {
    for( var i = 0; i < arguments.length; i++ ) {
        alert("This accident was caused by " + arguments[i]);
    }
}
accident("me","a car","alcohol","a tree that had no right to be in the path of my driving");
Run Code Online (Sandbox Code Playgroud)

但是我还想传递外部变量而不仅仅是整行字符串,如果这有意义的话?

基本上,我想要一个可以传递变量的函数,如下所示:

function myFunction(neededcodehere){
    //Some code here...
}

myFunction (var1, {"Option 1", "Option 2", "Option 3"}, anothervar);
Run Code Online (Sandbox Code Playgroud)

javascript function javascript-objects

39
推荐指数
3
解决办法
17万
查看次数

jQuery对象到JavaScript对象

如果我textarea喜欢var txtarea = $('textarea'),我如何使用JavaScript属性设置值value,而不是jQuery属性val()

我想我需要转换txtarea为JavaScript对象,但我该怎么做?

jquery object javascript-objects

37
推荐指数
4
解决办法
5万
查看次数

如何在JQuery中复制/克隆散列/对象?

我在Javascript中有一个简单的对象(或哈希):

var settings = {
  link: 'http://example.com',
  photo: 'http://photos.com/me.jpg'
};
Run Code Online (Sandbox Code Playgroud)

我需要它的副本.是否有一种settings.clone()类型方法会给我另一个具有相同属性的对象?我正在使用jQuery,很高兴使用jQuery实用程序方法(如果存在).

javascript jquery clone copy javascript-objects

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

声明JavaScript数组时"{}"和"[]"之间有什么区别?

声明JavaScript数组时"{}"和"[]"之间有什么区别?通常我会声明

var a=[];
Run Code Online (Sandbox Code Playgroud)

声明数组的含义是什么? var a={}

javascript arrays declaration object javascript-objects

37
推荐指数
3
解决办法
8万
查看次数

从数组创建对象

我想从数组列表中创建对象.我有一个动态的数组,假设看起来像这样:

var dynamicArray = ["2007", "2008", "2009", "2010"];

和一些javascript es6我想做一个像这样的对象:

const obj = {
    2007: {
        x: width / 5,
        y: height / 2
    },
    2008: {
        x: (2 / 5) * width,
        y: height / 2
    },
    2009: {
        x: (3 / 5) * width,
        y: height / 2
    },
    2010: {
        x: (4 / 5) * width,
        y: height / 2
    }
}
Run Code Online (Sandbox Code Playgroud)

不要担心内部对象,但只是想要这样的make结构:

 obj = {
      2007: ...,
      2008: ...,
      ...
    }
Run Code Online (Sandbox Code Playgroud)

请帮忙,谢谢.

javascript arrays javascript-objects ecmascript-6

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