【问题标题】:JavaScript check if array object exists or undefinedJavaScript 检查数组对象是否存在或未定义
【发布时间】:2015-09-27 15:28:05
【问题描述】:

如果新对象不存在,如何将新对象添加到数组中?

我检查了这个链接:How to check if array element exists or not in javascript?

但不确定如何推送新对象!

var element = [];

element['obj'] = 'one';

if (typeof element['obj']['bg'] === 'undefined') {

  console.log('not defined');

  element['obj']['bg'] = 'red';

  console.log(element);

} else {
  console.log('defined');
}

【问题讨论】:

  • element.push({'bg':'red'}); 怎么样?有点不清楚你在问什么。你能说得更具体点吗?
  • 您到底想达到什么目的? element['obj'] = 'one'; --> 这会将element['obj'] 初始化为字符串,然后您想向该(字符串)添加键/值对?
  • 您要使用arrayobjectelement['obj'] = 'one';element 上创建 attr obj,但不考虑长度。
  • 你期待什么结构?
  • 我不明白你的代码是做什么的。但是如果element['obj'] = 'one',当你做element['obj']['bg'] === 'undefined'它等于'one'['bg']。我觉得没有意义。

标签: javascript jquery


【解决方案1】:

尝试预先插入一个空数组;

var element = [];

element['obj'] = 'one';

if ( typeof element['obj']['bg'] === 'undefined' ) {

    console.log('not defined');

    element['obj'] = [element['obj']];

    element['obj']['bg'] = 'red';

    console.log( element);

} else {
    console.log('defined');
}

【讨论】:

  • 原始值消失!
  • 但你不能同时拥有 element['obj'] = 'one';和元素['obj']['bg'] = 'red';
  • 你可以在某种程度上......看我的回答。
  • 第一个表示“obj”索引值是一个字符串,第二个要求它是一个数组。你必须选择!
  • 我更新了您的答案以保存原始值。如果没有,只需还原它。谢谢。
【解决方案2】:

元素的类型为string,而不是对象或数组。

将特定变量更改为数组:

var element = {};
element['obj'] = ['one'];
if ( typeof element['obj']['bg'] === 'undefined' ) {
    console.log('not defined');
    element['obj']['bg'] = 'red';
    console.log(element);
} else {
    console.log('defined');
}

或者更好的对象:

element['obj'] = {};
element['obj']['id'] = 'one';

string 对象是不可变对象。

【讨论】:

  • 但是在array 上设置bg 是一个好习惯吗?也许我们应该等待 OP 解释他期望的结构。
  • @fuyushimoya 了解情况......他只是在设定一个值。就这样! OP 在这里并不意味着任何 CSS 或特定的东西。 :)
  • 是的.. 我同意你,这是 OP 对他的代码的期望。
【解决方案3】:
var element = [];

element['obj'] = 'one';

if ( typeof element['obj']['bg'] === 'undefined' ) {

    console.log('not defined');

    element['obj'] = {'bg':'red'};

    console.log("My value:"+element['obj']['bg'] );

} else {
    console.log('defined');
}

http://jsfiddle.net/o66uhd05/3/

【讨论】:

    【解决方案4】:

    var element = []; 定义一个数组而不是一个对象。要将新值推送到数组中,您需要使用 push 方法:

    element.push({'obj' : 'one'});
    

    但我认为你不需要在这里创建一个数组,而只需创建一个对象。像var element = {};一样声明你的对象

    就像element['obj'] = 'one'; 行一样,你有一个对象,键为obj,值为one

    当您编写element['obj']['bg'] 时,您尝试访问对象内部的对象。因此,在将值 red 设置为之前,您需要创建对象:

    element['obj'] = {};
    element['obj']['bg'] = 'red';
    

    完整示例:

    var element = {};
    
    element['obj'] = {};
    
    if (typeof element['obj']['bg'] === 'undefined') {
    
      console.log('not defined');
    
      element['obj']['bg'] = 'red';
    
      console.log(element);
    
    } else {
      console.log('defined');
    }

    【讨论】:

      【解决方案5】:

      你可以试试这个方法。

      var element = [],item = [];
      
      item['obj'] = 'one';
      element.push(item);
      
      if ( typeof element['obj']['bg'] === 'undefined' ) {
      
          console.log('not defined');
      
          item['bg']='red';
      
          element.push(item);
      
          console.log( element);
      
      } else {
          console.log('defined');
      }
      

      【讨论】:

        猜你喜欢
        • 2011-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-05
        • 2017-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多