javascript-检查数组中对象的值是否不存在

时间:2014-07-11 00:45:56

标签: javascript jquery html arrays

我有这个带有对象和值的简单数组,但并非所有对象都有相同的值:

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标记?

JSFiddle DEMO

6 个答案:

答案 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].adresstypeof 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")
    });
});

jsfiddle http://jsfiddle.net/guest271314/mU9T5/

答案 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>

SQL Fiddle

答案 4 :(得分:1)

你正在寻找的是:http://jsfiddle.net/Z7U3r/

  

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 />'
);