在AJAX请求之后,有时我的应用程序可能会返回一个空对象,例如:
var a = {};
Run Code Online (Sandbox Code Playgroud)
我怎样才能检查是否是这种情况?
我有一个像这样声明的JS对象
$scope.items = {};
Run Code Online (Sandbox Code Playgroud)
我还有一个$ http请求,用项目填充此对象.我想检测这个项目是否为空,看来ng-show支持这个...我输入
ng-show="items"
Run Code Online (Sandbox Code Playgroud)
并且神奇地它可以工作,我也想从控制器做同样的事情,但我似乎无法让它工作,似乎我可能必须迭代对象,看看它是否有任何属性或使用lodash或下划线.
还有其他选择吗?
我确实试过了
alert($scope.items == true);
Run Code Online (Sandbox Code Playgroud)
但是当对象被创建并填充时$http,它总是返回false,所以它不会那样工作.
我想创建一个if语句来检查对象是否是一个空对象.
通过空对象我的意思是如果我做console.log(对象)它打印出{}.
我该怎么做呢?
如何将字符串中表示的十六进制代码转换为字节,并将其反转为Javascript?
var conv = require('binstring');
var hexstring ='80';
var bytestring = conv(hexstring, {in:'hex', out:'utf8'});
var backtohexstring = conv(bytestring, {in:'utf8', out:'hex'}); // != '80'???
Run Code Online (Sandbox Code Playgroud)
backtohexstring将传入的数据字符串解码为正确的十六进制(我也使用了utf8与字节,因为它看起来像打印到控制台时的传入字符串),所以我很困惑......
我还发现了这两个原生的javascript函数,解码器在我的传入流上工作,但我仍然无法得到十六进制编码...
function encode_utf8( s ) {
return unescape( encodeURIComponent( s ) );
}
function decode_utf8( s ) {
return decodeURIComponent( escape( s ) );
}
Run Code Online (Sandbox Code Playgroud) 我有一个有趣的问题,我确信很容易解释,但解释是我的想法.
javascript中的undefined或null对象等于false.
var x;
alert(!x); //returns true
alert(x==true); //returns false
Run Code Online (Sandbox Code Playgroud)
那个空数组对象怎么样?这相当于真还是假?
var x = [];
alert (x==true); //returns false
alert (!x); //returns false
Run Code Online (Sandbox Code Playgroud)
如果它等于true,我该如何检查它是否为空?我本来希望这样做
if (!x) {
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
我试过检查x.length,但我正在使用这个对象作为地图:
var x = [];
alert(x.length); //returns 0
x.prop = "hello";
alert(x.length); //still returns 0
Run Code Online (Sandbox Code Playgroud)
如何检查我的地图是否为空?
可能是这个问题的重复.
愚蠢的javascript问题:我想检查对象是否是emtpy对象.
我将空对象称为使用空对象文字产生的对象,如下所示:
var o = {};
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,既不是==也===不起作用,如以下两个陈述
alert({}=={});
alert({}==={});
Run Code Online (Sandbox Code Playgroud)
假的.
不评估空对象的表达式示例:
0""{a:"b"}[]new function(){}那么评估空物体的最短方法是什么?
根据这个答案'对象是空的吗?' :
// Speed up calls to hasOwnProperty
var hasOwnProperty = Object.prototype.hasOwnProperty;
Run Code Online (Sandbox Code Playgroud)
我在小型JavaScript库中看到过类似的几种实现,例如:
var slice = Array.prototype.slice;
//or
function slice(collection) {
return Array.prototype.slice.call(collection);
}
Run Code Online (Sandbox Code Playgroud)
我做了一个快速的jsperf测试这种事情,缓存看起来总体上比不缓存更快,但我的测试可能有缺陷.
(我使用'cache'这个词来表示将方法存储在变量中.)
这个问题的上下文是开发人员需要多次调用本机方法,以及可观察到的差异.
缓存本机方法是否会阻止引擎在每次调用方法时都必须查看该方法的对象内部,从而在开发人员需要多次调用相同的本机方法时,使缓存成为调用本机方法的更快方法?
有没有更好的方法来检查对象是否为空?我正在使用这个:
function isObjEmpty(obj)
{
for (var p in obj) return false;
return true;
}
Run Code Online (Sandbox Code Playgroud) 以下代码是我对相当通用的 javascript 哈希代码实现的尝试。我计划将此代码与哈希表实现(例如 jshashtable)结合使用,该哈希表实现使用 hashCode() (如果它是为键定义的)。我尝试严格遵守 java 的数字、字符串和数组的哈希码实现。
问题:
注意:我知道下面的代码可以利用其他库,例如下划线和 jquery,但我不希望在我的实现中使用任何第三方依赖。这并不是说我对哈希代码库不感兴趣,它们本身可能依赖于 jquery、下划线等。
/**
* Computes a hash code for an object based on a given subset of its fields
* @param obj any type
* @param keys an array of strings representing some subset of the keys in obj or undefined
* @returns {Number} a java-like hash code for obj based on the hash codes of a subset of its fields …Run Code Online (Sandbox Code Playgroud) 不幸的是,我在某些文档的数组中得到了一些虚假对象,它们的结构如下:
{
"_id" : "8vJY4baMbdYkgHian",
"title" : "Cars",
"tradename" : [
{
},
{
"element" : "Audi"
},
{
"element" : "Mercedes"
}
]
}
Run Code Online (Sandbox Code Playgroud)
正如你在这个例子中看到的,数组中的第一个对象是空的。如何删除集合中tradename所有文档的所有数组中的空对象?
Collection.update(
{ 'tradename': {} },
{ $pull: { 'tradename.$': '' } }
);
Run Code Online (Sandbox Code Playgroud) 可能重复:
对象为空?
update: (id, data) ->
toUpdate = @find(id)
if toUpdate isnt {}
console.log "hi mom"
console.log toUpdate
toUpdate.setProperty(key, value) for own key, value of data
return toUpdate
find:(id) ->
result = record for record in @storage when record.id is id
return result or {}
Run Code Online (Sandbox Code Playgroud)
鉴于以下Mocha测试
describe '#update', ->
it 'should return an updated record from a given id and data when the record exists', ->
boogie = createData()
archive = new Archive("Dog")
dog = archive.create(boogie)
result = archive.update(1, {name:"Chompie", …Run Code Online (Sandbox Code Playgroud) 我从JSON响应中获取了一组对象.有时我得到一个长度为1的数组,其中包含一个空对象.我该如何检查这种情况?
I tried with a few things-
myarray[0]=='empty' || myarray[0] == 'undefined'
or myarray.indexOf(0)== -1
Run Code Online (Sandbox Code Playgroud)
但没有解决问题