我有这个带有对象和值的简单数组,但并非所有对象都有相同的值:
var array = [
{name: 'aaa', mobile: '111-111'},
{name: 'bbb', mobile: '222-222', adress: '333-333'},
{name: 'ccc', mobile: '444-444', adress: '555-555'}
]
第一个对象没有地址。
所以当我尝试将其附加到html时,我得到了undefined
字:
jQuery的:
$('ul').append(
'<li>'+array[i].name+'</li>'+
'<li>'+array[i].mobile+'</li>'+
'<li>'+array[i].adress+'</li>'+
)}
HTML:
<li>aaa</li>
<li>111-111</li>
<li>undefined</li>
<li>bbb</li>
<li>222-222</li>
<li>333-333</li>
如何检查此值是否不存在,然后显示任何内容而非undefined
字词?,甚至不显示整个li
标记?
答案 0 :(得分:3)
你需要设置它的地址仍然是' '
值。
var array = [
{name: 'aaa', mobile: '111-111',adress:''},
{name: 'bbb', mobile: '222-222', adress: '333-333'},
{name: 'ccc', mobile: '444-444', adress: '555-555'}
]
编辑:
解决方案2
检查array[i].adress
是typeof
Undefined
function details () {
if( typeof array[i].adress == "undefined"){
array[i].adress = '';
}
$('ul').append(
'<li>'+array[i].name+'</li>'+
'<li>'+array[i].mobile+'</li>'+
'<li>'+array[i].adress+'</li>'+
'<br />'
);
}
小提琴更新:Working Demo
答案 1 :(得分:3)
尝试
var array = [
{name: 'aaa', mobile: '111-111'},
{name: 'bbb', mobile: '222-222', adress: '333-333'},
{name: 'ccc', mobile: '444-444', adress: '555-555'}
];
$.each(array, function(index, value) {
$.each(value, function(key, val) {
$("<li>", {
"text": val
}).appendTo("ul")
});
});
答案 2 :(得分:2)
JavaScript具有固有的布尔值,通常称为truthy或falsy。未分配的值将在if语句中返回false,即
if(array[i].adress){
我在您的代码中添加了一个简写if语句来解决问题。
function details () {
$('ul').append(
'<li>'+array[i].name+'</li>'+
'<li>'+array[i].mobile+'</li>'+
(array[i].adress? '<li>'+ array[i].adress +'</li>': '')
);
}
答案 3 :(得分:1)
您可以使用以下内容:
function details () {
$('ul').append(
'<li>'+array[i].name+'</li>'+
'<li>'+array[i].mobile+'</li>'+
(typeof(array[i].adress) === 'undefined' ? '' :
('<li>'+array[i].adress+'</li>')) +
'<br />'
);
}
我使用了三元if
,条件是检查是否定义了address
属性。如果没有,则省略整个<li>
。
答案 4 :(得分:1)
你正在寻找的是:http://jsfiddle.net/Z7U3r/
hasOwnProperty
:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty hasOwnProperty()方法返回一个布尔值,指示是否 object具有指定的属性。
希望这符合您的需求:)
<强>码强>
array[i].hasOwnProperty('adress')
答案 5 :(得分:0)
检查一下
if (array[i].adress==null)
{
array[i]['adress'] = 'None';
}
$('ul').append(
'<li>'+array[i].name+'</li>'+
'<li>'+array[i].mobile+'</li>'+
'<li>'+array[i].adress+'</li>'+
'<br />'
);