标签: javascript-objects

JSON和JavaScript对象有什么区别?

我是JSON和JavaScript对象的新手.

  • 有人可以解释一下JSON和JavaScript对象之间的区别吗?
  • 它们的用途是什么?
  • 这个比那个好吗?还是取决于具体情况?
  • 何时使用哪一种,在什么情况下?
  • 为什么JSON首先创建?它的主要目的是什么?
  • 有人可以举例说明何时应该使用JSON而不是JavaScript对象,反之亦然?

javascript json javascript-objects

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

为什么我可以将命名属性添加到数组中,就像它是一个对象一样?

以下两个不同的代码片段似乎与我相同:

var myArray = Array();
myArray['A'] = "Athens";
myArray['B'] = "Berlin";
Run Code Online (Sandbox Code Playgroud)

var myObject = {'A': 'Athens', 'B':'Berlin'};
Run Code Online (Sandbox Code Playgroud)

因为它们的行为都相同,而且typeof(myArray) == typeof(myObjects)(都产生'对象').

这些变体之间有什么区别吗?

javascript arrays object javascript-objects

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

将Javascript对象编码为Json字符串

我想将Javascript对象编码为JSON字符串,我遇到了相当大的困难.

对象看起来像这样

new_tweets[k]['tweet_id'] = 98745521;
new_tweets[k]['user_id'] = 54875;       
new_tweets[k]['data']['in_reply_to_screen_name'] = "other_user";
new_tweets[k]['data']['text'] = "tweet text";
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个JSON字符串,将它放入一个ajax请求中.

{'k':{'tweet_id':98745521,'user_id':54875, 'data':{...}}}
Run Code Online (Sandbox Code Playgroud)

你得到了照片.不管我做什么,它都行不通.所有JSON编码器都像json2等产生

[]
Run Code Online (Sandbox Code Playgroud)

嗯,这对我没有帮助.基本上我想有像PHP encodejson功能的东西.

javascript json object javascript-objects

99
推荐指数
2
解决办法
24万
查看次数

javascript对象中的元素数量

有没有办法从某个地方获取javascript对象中的元素数量?(即恒定时间复杂度).

我找不到检索该信息的属性或方法.到目前为止,我只能想到在整个集合中进行迭代,但那是线性时间.
很奇怪,没有直接访问对象的大小,你不觉得.

编辑:
我说的是Object对象(一般不是对象):

var obj = new Object ;
Run Code Online (Sandbox Code Playgroud)

javascript collections elements javascript-objects

98
推荐指数
4
解决办法
14万
查看次数

JavaScript,优雅的方法来检查NULL/undefined的嵌套对象属性

一个"问题",我时不时地有一个对象,例如user = {},通过使用应用程序的过程,这将被填充.让我们说一下,在AJAX调用之后或者我这样做的事情:

user.loc = {
    lat: 50,
    long: 9
}
Run Code Online (Sandbox Code Playgroud)

在另一个地方,我想检查是否user.loc.lat存在.

if (user.loc.lat) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

如果它不存在,这将导致错误.如果user.loc.latundefined,user.loc当然也是undefined如此.

"Cannot read property 'lat' of null" - Dev Tools error
Run Code Online (Sandbox Code Playgroud)

这意味着我需要像这样检查:

if (user.loc) {
    if (user.loc.lat) {
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

if (user.loc && user.loc.lat) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

这不是很漂亮,我的对象越大越好 - 显然(想象10级嵌套).它种烧伤我,if(user.loc.lat)不只是返回false,如果user.locundefined也.

检查这种情况的理想方法是什么?

javascript object javascript-objects

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

这种定义JS对象的方式有什么用途吗?

我正在维护一些遗留代码,我注意到使用了以下用于定义对象的模式:

var MyObject = {};

(function (root) {

    root.myFunction = function (foo) {
        //do something
    };

})(MyObject);
Run Code Online (Sandbox Code Playgroud)

这有什么用途吗?它只相当于做以下事情吗?

var MyObject = {

    myFunction : function (foo) {
        //do something
    };

};
Run Code Online (Sandbox Code Playgroud)

我不打算采用神圣的方式将整个代码库重构为我的喜好,但我真的很想了解定义对象的迂回方式背后的原因.

谢谢!

javascript javascript-objects

87
推荐指数
6
解决办法
3167
查看次数

ES6中的地图与对象,何时使用?

参考:MDN地图

当密钥未知时直到运行时,并且当所有键都是相同类型且所有值都是相同类型时,请使用对象上的映射.

当存在对各个元素进行操作的逻辑时使用对象.

题:

在对象上使用地图的适用示例是什么?特别是"什么时候直到运行时才能知道密钥?"

var myMap = new Map();

var keyObj = {},
    keyFunc = function () { return 'hey'},
    keyString = "a string";

// setting the values
myMap.set(keyString, "value associated with 'a string'");
myMap.set(keyObj, "value associated with keyObj");
myMap.set(keyFunc, "value associated with keyFunc");

console.log(myMap.get(keyFunc));
Run Code Online (Sandbox Code Playgroud)

javascript javascript-objects ecmascript-6

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

JS对象中的键(字符串)的长度是否有限制?

所以我们有一个案例,我们会有一些JSON,其中key是id(int),值是字符串.但是我们注意到大多数时候,我们根据字符串查找id,所以我们决定将其反转并将字符串作为键,值为id.因为这样而不是遍历每个项目并比较值,我们可以这样做var id = storage[text];.以下是我们所做的例子.

这是旧实现的示例:

var storage = {
  0 : null,
  1 : "Hello",
  2 : "world!",
  3 : "How are you?"
}
Run Code Online (Sandbox Code Playgroud)

以下是新实现的示例:

var storage = {
  "null" : 0,
  "Hello" : 1,
  "world!" : 2,
  "How are you?" : 3
}
Run Code Online (Sandbox Code Playgroud)

我知道现在字符串是键,并且可以为相同的字符串获取相同的id.但是从现在开始字符串可能非常巨大(机会很小,但每个字符串可能最大1KB),JS或Android webview是否存在长度限制对象键?

而且,这种实施有缺点吗?到目前为止我没有发现任何问题,但你永远都不知道.

javascript android javascript-objects android-webview

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

如何求和JavaScript对象的值?

我想总结一个对象的值.

我习惯了python,它只会是:

sample = { 'a': 1 , 'b': 2 , 'c':3 };
summed =  sum(sample.itervalues())     
Run Code Online (Sandbox Code Playgroud)

以下代码有效,但它是很多代码:

function obj_values(object) {
  var results = [];
  for (var property in object)
    results.push(object[property]);
  return results;
}

function list_sum( list ){
  return list.reduce(function(previousValue, currentValue, index, array){
      return previousValue + currentValue;
  });
}

function object_values_sum( obj ){
  return list_sum(obj_values(obj));
}

var sample = { a: 1 , b: 2 , c:3 };
var summed =  list_sum(obj_values(a));
var summed =  object_values_sum(a)
Run Code Online (Sandbox Code Playgroud)

我错过了什么明显的,或者这只是它的方式?

javascript object javascript-objects

66
推荐指数
7
解决办法
10万
查看次数

Javascript:删除数组中所有对象的属性

我想从数组中的每个对象中删除"bad"属性.有没有比使用for循环并从每个对象中删除它更好的方法呢?

var array = [{"bad": "something", "good":"something"},{"bad":"something", "good":"something"},...];

for (var i = 0, len = array.length; i < len; i++) {
  delete array[i].bad;
}
Run Code Online (Sandbox Code Playgroud)

看起来似乎应该有一种方法来使用原型或其他东西.我不知道.想法?

javascript javascript-objects

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