假设我有一个options变量,我想设置一些默认值.
这两种选择的好处/缺点是什么?
使用对象传播
options = {...optionsDefault, ...options};
Run Code Online (Sandbox Code Playgroud)
或者使用Object.assign
options = Object.assign({}, optionsDefault, options);
Run Code Online (Sandbox Code Playgroud)
我.js在我的页面中添加了一个简单的文件,其中添加了一些非常普通的常见任务类型的函数Object和Array原型.
通过反复试验,我发现添加任何函数Object.prototype,无论它的名称或它的作用导致jQuery中的Javascript错误:
罪魁祸首?
Object.prototype.foo = function() {
/*do nothing and break jQuery*/
};
Run Code Online (Sandbox Code Playgroud)
我jquery-1.3.2.js在attr:function {}声明中得到第1056行的错误:
/*Object doesn't support this property or method*/
name = name.replace(/-([a-z])/ig, function(all, letter) {
return letter.toUpperCase();
});
Run Code Online (Sandbox Code Playgroud)
显然G.replace是未定义的.
虽然很明显有些东西我只是没有用原型制作来解决问题,但我很难弄清楚它是什么.
要清楚,我不是在寻找一种解决方法,我已经处理好了......我正在寻找的是为什么要回答?.为什么要添加一个函数来Object.prototype打破这段代码呢?
我已经声明了一个JSON对象,并在其中添加了一些键值对,如:
var obj = {};
Run Code Online (Sandbox Code Playgroud)
并添加了一些数据,如:
obj = {
"1":"aa",
"2":"bb"
};
Run Code Online (Sandbox Code Playgroud)
但是我想在同一个对象中添加更多的键值对,如果我添加上面提到的键值对,那么它将替换旧的键值对.那么任何人都可以告诉我如何在同一个JSON对象中添加数据,即obj.
如果我有这样的数组:
var myarray = [];
myarray.push({
"Name": 'Adam',
"Age": 33
});
myarray.push({
"Name": 'Emily',
"Age": 32
});
Run Code Online (Sandbox Code Playgroud)
这给了我一个数组,我可以拿出值myarray[0].Name给我"亚当"的值.
然而,这种阵列建成后,我怎么能添加一个"地址"字段与"地方街"的一个值在位置数组[0],让自己在该对象领域在零位置现在Name,Age和Address用相应的价值?
我想splice()某想但是找不到使用对象的例子,只是简单数组的例子.
任何人都可以帮助解释为什么长度返回0?非常感谢你提前!
var errors = [];
errors[''] = "Monday Morning slot already taken. Would you like to replace it?";
console.log(errors);
document.write(errors.length);
Run Code Online (Sandbox Code Playgroud) 所以,例如,我有以下数组
var sections = [{ name: 'apple', count: 20 },
{ name: 'banana', count: 80 },
{ name: 'oranges', count: 10 }]
Run Code Online (Sandbox Code Playgroud)
现在,如果我想添加更多项目,那么我可以做到
sections.push({ name: 'mango', count: '32' });
Run Code Online (Sandbox Code Playgroud)
这将把新数组添加到部分.
现在,假设,我有另一个数组,显示水果的来源和数量.
var country = [{ country: 'usa', count: 5 },
{ country: 'brazil', count: 27 }]
Run Code Online (Sandbox Code Playgroud)
所以,我想将这个新country数组添加到第三个元素中,sections使用一个名为country的新prop,如下所示.
var sections = [{ name: 'apple', count: 20 },
{ name: 'banana', count: 80 },
{ name: 'oranges', count: 10,
country: [{ country: 'usa', count: 5 },
{ country: …Run Code Online (Sandbox Code Playgroud) 在 MongoDb 中应用过滤器
我需要在嵌入文档中的 mongoDb 中应用过滤器,所以我如何进行查询
例子:
var query = {
_id:userId,
'match.Id':matchId,
'match.userId':userId1
}
Run Code Online (Sandbox Code Playgroud)
现在我想应用过滤器让我们假设
案例 1:我的查询应该是这样的
var query = {
_id:userId,
'match.Id':matchId,
}
Run Code Online (Sandbox Code Playgroud)
案例2:
var query = {
_id:userId,
'match.userId':userId1
}
Run Code Online (Sandbox Code Playgroud)
可能有很多这样的情况
所以我的问题是如何在 node.js/javascript 中创建这个查询对象
我的工作:我可以在一个对象中创建多个键,但创建如下键不起作用
var query={}
query._id:userId // works
query.'match.userId':matchId // error
query.match.userId:matchId //error
Run Code Online (Sandbox Code Playgroud)
尝试下面的代码得到了所需的输出,但它带有方括号,但 arr 的类型是对象
var arr = [];
arr[ 'key3.abc' ] = "value3";
arr[ 'key2.abc' ] = "value3";
console.log(arr)//[ 'key3.abc': 'value3', 'key2.abc': 'value3' ]
Run Code Online (Sandbox Code Playgroud)
所需的输出:
{'key3.abc': 'value3', 'key2.abc': 'value3'}
Run Code Online (Sandbox Code Playgroud) 我有这个对象: keyValue : { key : string , value : number}[];
我想从两个值向该数组添加一个新元素,如下所示:
let tmpTabKV : { key : string , value : number}[];
[...]
tmpTabKV.push({projet.libelle, statKV.value});
[...]
keyValue = tmpTabKV;
Run Code Online (Sandbox Code Playgroud)
我尝试了多种语法并看到了这个: How can I add a key/valuepair to a JavaScript object?
但我没有看到任何创建新对象的键。数组的使用让我犯了一个 错误
tmpTabKV.push(Array(projet.libelle, statKV.value));
Run Code Online (Sandbox Code Playgroud) 我试图将我的变量推送到这个对象但不确定如何以正确的方式:
如果手动输入jsonArray如下所示:
jsonArray = {
"Person 1": ["Address Rd. City", "777 Street Ave. City"],
"Person 2": ["Address2 Rd. City2", "777 Street Ave. City"]
}
Run Code Online (Sandbox Code Playgroud)
我有一个循环,我想将变量推入jsonArray,我正在这样尝试:
var jsonArray = {};
for (var i = 0....my loop, etc)...
jsonArray.push({fullname: [address, destination]});
Run Code Online (Sandbox Code Playgroud)
这不起作用,当我JSON.stringify(jsonArray)时,jsonArray总是显示为{}
我有这样的JSON数组
var array= [{id:1,name:'foo'},{id:2,name:'bar'}]
Run Code Online (Sandbox Code Playgroud)
我想isApproved为现有数组中的每个对象添加一个新键(例如:)
预期产量:
var array= [{id:1,name:'foo',isApproved:true},{id:2,name:'bar',isApproved:true}]
Run Code Online (Sandbox Code Playgroud)
我使用map函数来实现这一点
array.map(function(e,index){
e.isApproved[index]= true
}
Run Code Online (Sandbox Code Playgroud)
但这不适合我
有没有一种简便的方法可以在 javascript 中向类的实例添加属性?
编辑:重复的答案是关于向对象而不是类添加属性。我试图让用户轻松添加大约 10-20 个属性。我还试图确保他们无法添加自己的属性,而只能向预定义的属性添加值。我不知道该怎么做。
我有一个 javascript“类”:
function Car(){
this.make="";
this.model="";
//...
}
Run Code Online (Sandbox Code Playgroud)
要创建实例并添加属性,我将使用:
var mycar = new Car();
mycar.make="honda";
mycar.model="civic";
//...
Run Code Online (Sandbox Code Playgroud)
有没有一种快捷方式来创建实例并添加属性,这样我就不必键入“mycar”。每一次?
我有一个现有的 javascript 对象。
let existingObject = {
1: {
'prop1': 'prop1 value',
'prop2': 'prop2 value'
},
2: {
'prop1': 'prop1 value',
'prop2': 'prop2 value'
},
3: {
'prop1': 'prop1 value',
'prop2': 'prop2 value'
}
}
Run Code Online (Sandbox Code Playgroud)
我想向该现有对象添加一个属性。我的新关键值是:
const key = 4;
const value = {
'prop1': 'prop1 value',
'prop2': 'prop2 value'
}
Run Code Online (Sandbox Code Playgroud)
附加键和值后,我的新对象应该是,
const newObject = {
1: {
'prop1': 'prop1 value',
'prop2': 'prop2 value'
},
2: {
'prop1': 'prop1 value',
'prop2': 'prop2 value'
},
3: {
'prop1': 'prop1 value',
'prop2': …Run Code Online (Sandbox Code Playgroud) javascript ×12
arrays ×5
jquery ×2
class ×1
ecmascript-6 ×1
json ×1
keyvaluepair ×1
lodash ×1
mongodb ×1
node.js ×1
object ×1
prototype ×1
prototyping ×1
push ×1
shorthand ×1
typescript ×1