如果不存在,如何将推送新对象添加到数组中?
我查看此链接:How to check if array element exists or not in javascript?
但不确定如何推送新对象!
http://jsfiddle.net/zerolfc/o66uhd05/1/
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');
}
答案 0 :(得分: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
个对象是不可变对象。
答案 1 :(得分:2)
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');
}
答案 2 :(得分: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');
}
答案 3 :(得分:1)
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');
}
答案 4 :(得分:0)
你可以这样试试。
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');
}