如果我有一个JavaScript对象,请说
const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
Run Code Online (Sandbox Code Playgroud)
是否有内置或接受的最佳实践方法来获取此对象的长度?
是否有任何可以返回对象长度的内置函数?
例如,我a = { 'a':1,'b':2,'c':3 }应该返回3.如果我使用a.length它返回undefined.
它可能是一个简单的循环函数,但我想知道是否有内置函数?
有一个相关的问题(JSON对象的长度) - 在选择的答案中,用户建议将对象转换为数组,这对我的任务来说不太舒服.
我有一个json对象,由AJAX请求返回,我遇到了一些麻烦,.length因为它一直在返回undefined.只是想知道我是否正确使用它:
console.log(data.length);
console.log(data.phones.length);
Run Code Online (Sandbox Code Playgroud)
它们都返回,undefined即使它们是有效的对象.
更新:
返回的JSON对象的示例:
{"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}}
Run Code Online (Sandbox Code Playgroud) 假设我在JavaScript中有以下对象:
var object = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
};
Run Code Online (Sandbox Code Playgroud)
如何找出对象中存在多少个值?
每个JS意见领袖都说扩展原生对象是一种不好的做法.但为什么?我们是否获得了性能?他们是否害怕有人以"错误的方式"做到这一点,并添加了可枚举的类型Object,几乎破坏了任何对象上的所有循环?
以TJ Holowaychuk的should.js为例.他增加了一个简单的getter来Object,一切工作正常(来源).
Object.defineProperty(Object.prototype, 'should', {
set: function(){},
get: function(){
return new Assertion(Object(this).valueOf());
},
configurable: true
});
Run Code Online (Sandbox Code Playgroud)
这真的很有道理.例如,可以扩展Array.
Array.defineProperty(Array.prototype, "remove", {
set: function(){},
get: function(){
return removeArrayElement.bind(this);
}
});
var arr = [0, 1, 2, 3, 4];
arr.remove(3);
Run Code Online (Sandbox Code Playgroud)
是否有任何反对扩展本机类型的论据?
有没有办法从某个地方获取javascript对象中的元素数量?(即恒定时间复杂度).
我找不到检索该信息的属性或方法.到目前为止,我只能想到在整个集合中进行迭代,但那是线性时间.
很奇怪,没有直接访问对象的大小,你不觉得.
编辑:
我说的是Object对象(一般不是对象):
var obj = new Object ;
Run Code Online (Sandbox Code Playgroud) 当密钥未知时直到运行时,并且当所有键都是相同类型且所有值都是相同类型时,请使用对象上的映射.
当存在对各个元素进行操作的逻辑时使用对象.
在对象上使用地图的适用示例是什么?特别是"什么时候直到运行时才能知道密钥?"
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) 我有一个像这样的对象:
Object {0=Object, 1=Object, 2=Object} // Output from console.log(obj.Data);
Run Code Online (Sandbox Code Playgroud)
但是我无法计算对象中的对象数,最后从子对象中获取属性值.
我试过了
console.log(obj.Data[0].length); // It does not work
console.log(obj.Data.length); // It does not work
Run Code Online (Sandbox Code Playgroud)
这对我来说有点棘手.希望你们能帮忙.
我从服务器获得了一些JSON数据.在我的JavaScript中,我想对它进行一些排序.我认为sort()函数会做我想要的.
但是,似乎JavaScript在到达时立即将JSON数据转换为Object.如果我尝试使用sort()方法,我会得到错误a-plenty(使用Firebug进行测试).
我环顾网络,每个人似乎都说,一方面,JSON对象已经是JavaScript数组,而且对象可以像数组一样对待.就像这个问题一样,在其中一个答案中,一个人说"[对象]是你的数据 - 你可以像对待数组那样访问它."
但是,这并不完全正确.JavaScript不允许我在我的对象上使用sort().而且由于默认的假设是它们都是一样的,所以似乎没有关于如何将Object转换为数组的任何指令,或强制JavaScript将其视为一个或类似的东西.
那么......我如何让JavaScript让这个数据作为数组处理并排序()呢?
我的对象的控制台日志输出看起来像这样(我希望能够按"级别"中的值排序):
OBJECT JSONdata
{
1: {
displayName: "Dude1",
email: "dude1@example.com<mailto:dude1@example.com>",
lastActive: 1296980700,
level: 57,
timeout: 12969932837
}, 2: {
displayName: "Dude2",
email: "dude2@example.com<mailto:dude2@example.com>",
lastActive: 1296983456,
level: 28,
timeout: 12969937382
}, 3: {
displayName: "Dude3",
email: "dude3@example.com<mailto:dude3@example.com>",
lastActive: 1296980749,
level: 99,
timeout: 129699323459
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试计算JSON数组元素的长度.我知道要计算使用数组的长度json.array.length.这需要找到每个索引中有多少项.
如果我的数组是:
{"shareInfo":[{"id":"1","a":"sss","b":"sss","question":"whi?"},
{"id":"2","a":"sss","b":"sss","question":"whi?"},
{"id":"3","a":"sss","b":"sss","question":"whi?"},
{"id":"4","a":"sss","b":"sss","question":"whi?"}]}
Run Code Online (Sandbox Code Playgroud)
然后我需要找到它的长度{"id":"1","a":"sss","b":"sss","question":"whi?"}.在这有四个项目.我试过这个data.shareInfo[i].length.但它会产生错误.
请有人告诉我如何找到长度....谢谢......
javascript ×10
object ×4
json ×3
arrays ×1
collections ×1
count ×1
ecmascript-6 ×1
elements ×1
jquery ×1
prototype ×1
sorting ×1