Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Jquery计算对象文字中的对象数_Javascript_Jquery_Jquery Ui_Object_Object Literal - Fatal编程技术网

Javascript 使用Jquery计算对象文字中的对象数

Javascript 使用Jquery计算对象文字中的对象数,javascript,jquery,jquery-ui,object,object-literal,Javascript,Jquery,Jquery Ui,Object,Object Literal,代码: 我想在此对象文本中使用Jquery计算对象的数量。您可以使用object.keys(animals.length 或 或者是许多jQuery解决方案中最有效的一种: var count = 0; for (var animal in animals) { if (animals.hasOwnProperty(animal)) { count++; } } // `count` now holds the number of object literals

代码:


我想在此对象文本中使用Jquery计算对象的数量。

您可以使用
object.keys(animals.length

或者是许多jQuery解决方案中最有效的一种:

var count = 0;
for (var animal in animals) {
    if (animals.hasOwnProperty(animal)) {
        count++;
    }
}
// `count` now holds the number of object literals in the `animals` variable

如果你想要一些跨浏览器的东西,这也适用于IE8,你不能以一种非常干净的方式来做(请参阅)

我建议:

var count = $.map(animals, function(n, i) { return i; }).length;

(因为它是对象文字,不需要hasOwnProperty)

不能使用数组吗

无论如何,在对象中,可以执行以下操作:

var n = 0;
for (var _ in animals) n++;

是的,因为不可能使用对象填充并污染原型…最好是安全的。这不是不可能的,但你的代码不应该防止疯狂。任何一个头脑清醒的人在对象的原型中添加一个属性至少会使其不可枚举……疯狂?是啊,太疯狂了!除了
Object.defineProperty
,您还可以如何定义不可枚举的属性?(只是想知道,我不确定)Object.create但是要修改Object的原型(我不习惯),我想你必须使用defineProperty。如果他需要命名他的属性,他不能使用数组,修改Objects原型被认为是不好的做法,特别是如果有一个
对象
s方法可用于此->
对象。keys
为您提供一个带有键名的数组,该数组随后具有长度属性对象。keys是EcmaScript 5标准,不适用于IE8或lt。无论如何,您可以使用数组并命名属性:var things=[];事物['someShit']='Hello';事物['someShit2']='World!';console.log(things.someShit+''+things.someShit2);好吧,给数组命名键也是个坏主意,因为它会打断一些数组方法,比如slice或forEach(它们只会忽略命名键),而且您还必须使用Object.keys()。长度或使用键进行迭代以获得正确的长度,仅举几个例子,她在Sry从事拼写工作,我在手机上
var n = 0;
for (var _ in animals) n++;
Object.prototype.length = function() {
    var count = 0, k=null;
    for (k in this) {
        if (this.hasOwnProperty(k)) count++;
    }
    return count;
}
console.log( animals.length() );