【问题标题】:javascript- check if value of object in array is not existjavascript-检查数组中对象的值是否不存在
【发布时间】:2014-09-01 12:51:00
【问题描述】:

我有一个包含对象和值的简单数组,但并非所有对象都具有相同的值:

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

【问题讨论】:

    标签: javascript jquery html arrays


    【解决方案1】:

    您仍然需要设置它的地址,但使用 ' ' 值。

    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

    【讨论】:

    • 我有数百个元素,每个元素大约有 15 个值,所以我无法手动更改它们
    【解决方案2】:

    试试

    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/

    【讨论】:

    【解决方案3】:

    JavaScript 有一个固有的布尔值,通常称为真值或假值。未分配的值将在 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>': '')
    );
    }
    

    【讨论】:

    • 你的if 比我的好。我忘了undefinedfalthy
    • 谢谢@Bryan,这就是我想要的:)
    【解决方案4】:

    你可以这样使用:

    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 属性。如果不是,则省略整个&lt;li&gt;

    SQL Fiddle

    【讨论】:

      【解决方案5】:

      你要找的是这个:http://jsfiddle.net/Z7U3r/

      hasOwnProperty() 方法返回一个布尔值,指示是否 对象具有指定的属性。

      希望这符合您的需求:)

      代码

      array[i].hasOwnProperty('adress')

      【讨论】:

      【解决方案6】:

      检查这个

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

      【讨论】:

      • 这样,一个没有地址值的元素的所有值都会消失,这不是我想要的
      • 试试这个类似的,你可以添加其他名称和移动
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 2018-11-04
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多