例如我有:
var Data = [
{ id_list: 1, name: 'Nick', token: '312312' },
{ id_list: 2, name: 'John', token: '123123' },
]
Run Code Online (Sandbox Code Playgroud)
然后我想通过例如排序/反转这个对象name.我得到这样的东西:
var Data = [
{ id_list: 2, name: 'John', token: '123123' },
{ id_list: 1, name: 'Nick', token: '312312' },
]
Run Code Online (Sandbox Code Playgroud)
现在我想知道带有属性的对象索引name='John'来获取属性令牌的值.
我创建了一个像这样的对象:
company1.name = 'banana'
company1.value = 40
Run Code Online (Sandbox Code Playgroud)
我想保存这个对象.我怎样才能做到这一点?
我试图在两个表单之间传递一个对象(基本上是对当前登录用户的引用).目前,我在登录表单中有这些内容:
private ACTInterface oActInterface;
public void button1_Click(object sender, EventArgs e)
{
oActInterface = new ACTInterface(@"\\actserver\Database\Premier.pad",this.textUser.Text,this.textPass.Text);
if (oActInterface.checkLoggedIn())
{
//user has authed against ACT, so we can carry on
clients oClientForm = new clients(oActInterface);
this.Hide();
oClientForm.Show();
}
else...
Run Code Online (Sandbox Code Playgroud)
在下一个表格(客户)上,我有:
public partial class clients : Form
{
private ACTInterface oActInt {get; set;}
public clients(ACTInterface _oActInt)
Run Code Online (Sandbox Code Playgroud)
...导致我得到:
Error 1 Inconsistent accessibility:
parameter type 'support.ACTInterface' is less accessible than method
'support.clients.clients(support.ACTInterface)'
c:\work\net\backup\support\support\clients.cs 20 16 support
Run Code Online (Sandbox Code Playgroud)
我真的不明白问题是什么 - 两个字段都是私有的,并且可以通过表单中的相关公共方法访问.谷歌搜索并没有真正帮助,因为它只是指向一个元素是公共的而另一个是私有的,这不是这里的情况.
有人帮忙吗?
我需要填充一个json文件,现在我有这样的东西:
{"element":{"id":10,"quantity":1}}
Run Code Online (Sandbox Code Playgroud)
我需要添加另一个"元素".我的第一步是将json放在Object类型中cart = JSON.parse,现在我需要添加新元素.我想我必须使用cart.push添加另一个元素,我试过这个:
var element = {};
element.push({ id: id, quantity: quantity });
cart.push(element);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试做的时候我得到错误"对象没有方法推送" element.push,我认为我做了一些非常错误的事情,因为我没有在任何地方告诉"元素".
我怎样才能做到这一点?
编辑:对不起,我头脑中有很多困惑.
我认为在从数据中获取数据时我只能得到对象类型JSON.parse,但我首先得到了我在JSON中的内容.
放数组而不是对象解决了我的问题,我也在这里使用了很多建议,谢谢大家!
我正在尝试这样的事情,但这个例子不起作用.
jsObj = {};
for (var i = 1; i <= 10; i++) {
jsObj{'key' + i} = 'example ' + 1;
}
Run Code Online (Sandbox Code Playgroud)
如何制作这样的动态密钥呢?
我有两个对象:oldObj和newObj.
数据oldObj用于填充表单,newObj是用户更改此表单中的数据并提交数据的结果.
两个对象都很深,即.它们具有对象或对象数组等属性 - 它们可以是n级深度,因此diff算法需要是递归的.
现在我需要不只是从弄清楚什么改变(如添加/更新/删除)oldObj来newObj,却怎么也最能代表它.
到目前为止,我的想法只是构建一个genericDeepDiffBetweenObjects方法,它将返回表单上的对象,{add:{...},upd:{...},del:{...}}但后来我想:其他人必须先需要它.
那么......有没有人知道一个库或一段代码可以做到这一点,并且可能有更好的方式来表示差异(以一种仍然是JSON可序列化的方式)?
我想到了一种更好的方式来表示更新的数据,使用相同的对象结构newObj,但将所有属性值转换为表单上的对象:
{type: '<update|create|delete>', data: <propertyValue>}
Run Code Online (Sandbox Code Playgroud)
所以,如果newObj.prop1 = 'new value'和oldObj.prop1 = 'old value'它会设置returnObj.prop1 = {type: 'update', data: 'new value'}
当我们得到数组的属性时,它会变得非常毛茸茸,因为数组[1,2,3]应该被计算为等于[2,3,1],这对于基于值的类型的数组(如string,int和bool)来说非常简单,但是当涉及到它时,它实际上很难处理引用类型的数组,如对象和数组.
应该找到的示例数组相等:
[1,[{c: 1},2,3],{a:'hey'}] and [{a:'hey'},1,[3,{c: 1},2]]
Run Code Online (Sandbox Code Playgroud)
检查这种类型的深度值相等不仅非常复杂,而且还要找出一种表示可能的变化的好方法.
我知道在javascript对象中双重作为哈希,但我一直无法找到内置函数来获取密钥
var h = {a:'b',c:'d'};
Run Code Online (Sandbox Code Playgroud)
我想要类似的东西
var k = h.keys() ; // k = ['a','c'];
Run Code Online (Sandbox Code Playgroud)
自己编写一个函数来迭代项目并将键添加到我返回的数组中是很简单的,但有没有一种标准的清洁方法呢?
我一直觉得它必须是一个简单的内置功能,我错过了,但我找不到它!
这个基于构造函数的语法创建对象有什么区别:
person = new Object()
Run Code Online (Sandbox Code Playgroud)
...和这个文字语法:
person = {
property1 : "Hello"
};
Run Code Online (Sandbox Code Playgroud)
虽然JSLint更喜欢使用对象文字表示法,但它们似乎都做同样的事情.
哪一个更好,为什么?
假设我有一个Python对象x和一个字符串s,我怎么设置属性s上x?所以:
>>> x = SomeObject()
>>> attr = 'myAttr'
>>> # magic goes here
>>> x.myAttr
'magic'
Run Code Online (Sandbox Code Playgroud)
什么是魔术?顺便说一下,这个目的是缓存呼叫x.__getattr__().