我是Java脚本的新手,所以我很抱歉,如果这很琐碎。如果我有一个对象,我的问题是句法上的:
this.state = {
A : {
B: {
C : [
{value : 'bob'},
{value : 'Jim'},
{value : 'luke'},
]
}
}
}
我有一个字符串location = 'A.B.C[1]'
,描述了我想要的数据的位置。
为什么我不能只做 data = this.state[location].value
呢?
是否有使用位置字符串获取数据的简单“ JavaScript”方法?
任何帮助都将是惊人的:)
您可以分割路径并缩小对象。
function getValue(o, path) {
return path.replace(/\[/g, '.').replace(/\]/g, '').split('.').reduce(function (o, k) {
return (o || {})[k];
}, o);
}
var o = { A : { B: { C: [{ value: 'Brenda' }, { value: 'Jim' }, { value: 'Lucy' }] } }};
console.log(getValue(o, 'A.B.C[1]').value); // Jim
console.log(getValue(o, 'A.B.C[0].value')); // Brenda
console.log(getValue(o, 'Z[0].Y.X[42]')); // undefined
对于设置值,您可以拆分路径并通过遍历给定的对象来缩小路径。如果不存在任何对象,请使用名称或数组创建一个新属性。稍后分配值。
function setValue(object, path, value) {
var way = path.replace(/\[/g, '.').replace(/\]/g, '').split('.'),
last = way.pop();
way.reduce(function (o, k, i, kk) {
return o[k] = o[k] || (isFinite(i + 1 in kk ? kk[i + 1] : last) ? [] : {});
}, object)[last] = value;
}
var test = {};
setValue(test, "foo.name", "Mr. Foo");
setValue(test, "foo.data[0].bar", 100);
setValue(test, "and.another[2].deep", 20);
console.log(test);
我正在做一个项目,在那里用户可以写其他用户的邮件。邮件类当前如下所示: 现在,问题是,我需要将所有邮件保存到. yml用户数据文件中。对我来说,最简单的方法是首先将每封邮件转换为字符串,然后将所有邮件保存到
我需要得到这个json字符串的Works数组: 我试试这个: 但是不要让任何人。。怎么了? PD:Work是一个具有价格、代码和名称值的类。
我正在使用com。谷歌。格森。Gson将JSON字符串转换为Java对象的API: 我想知道javax.jsonapi中是否有等效的API来执行等效操作。谢谢!
我正在尝试将json解析为java。 根据jsonlint,以下字符串是有效的json。com公司 我试图将它解析成一个对象,我得到了以下错误。"预期BEGIN_OBJECT但BEGIN_ARRAY在第1行第2列" BoxSearch由此组成。 框是定义相同的纬度对象和经度对象。 我可以将更高级别的属性(lat1、lat2、long1和long2)解析为一个更简单的BoxSearch对象,该对象只
问题内容: 我正在使用select2中的multiselect元素来输入多个“标签”。当我想从元素中获取值时,我会得到如下信息(对于我在框中输入的tag1和tag2): 如何从数组中的文本中获取结果,如下所示: 而我该如何逆转这一过程呢? 问题答案: 试试这个简单的迭代。
问题内容: 我得到的输出为 控制器中的日期Mon Dec 31 IST 2012 请提出一种以格式输出日期的方法。需要以日期格式而不是字符串形式输出,以便将输出存储在mysql db的字段中 问题答案: 声明后 您有一个对象, 可以将其按原样存储在mysql DB中 (列类型:datetime)。 但是,在打印时,它默认为实现。我认为您希望获得类似Date @的输出,但是toString以用户可读