我有一个JSON数据,如下所示,其中的值应该基于验证中间值从内部和外部对象中取。
例如:如果cat=4,那么我应该创建一个对象,如下所示
"material_id": xcs2,
"cat": 4;
"title": "1ctrlX ",
"description": "1The single-axis ",
"link": "1example.com"
我设法提取了所有除了如何找到material_id?下面是我的代码
null
let data = [{
"Products": {
"xcs2": {
"de_DE": {
"cat": "45",
"title": "deutsch - Umrichter",
"description": "Die Einzelachs-Umrichter .",
"link": "example.com"
},
"en_US": {
"cat": "4",
"title": "1ctrlX ",
"description": "1The single-axis ",
"link": "1example.com"
}
},
"XCD1": {
"de_DE": {
"cat": "435",
"title": "ctrlX ",
"description": "Die ",
"link": "example.com"
},
"en_US": {
"cat": "4",
"title": "2ctrlX ",
"description": "2The single-axis ",
"link": "2example.com"
}
}
}
}]
var jsonobj = null;
data.filter(item => { // here data is divided into multiple array and executes iterateobject fun on each item
iterateObject(item)
})
function iterateObject(obj) {
for (prop in obj) { // prop is the key here (should have de_DE and object)
if (typeof(obj[prop]) == "object") { // obj[prop] is the value.
iterateObject(obj[prop])
} else {
if (prop == "cat" && obj[prop] == 4) { // prop is the key (imagining id 04)
//console.log('category id :' + obj.cat.toUpperCase())
category_id = obj.cat
title = obj.title
description = obj.description
link = obj.link
jsonobj = {
"category_id": category_id,
"title": title,
"description": description,
"link": link
}
console.log(jsonobj)
}
}
}
}
null
根据您最近的评论,我不确定您是否需要一种递归方法,但我已经将它保留了下来。在下面的代码中,想法是将所有父键传递给iterateObject的子调用,以便在构建结果对象时可以使用它们。
null
let data = [{"Products":{"xcs2":{"de_DE":{"cat":"45","title":"deutsch - Umrichter","description":"Die Einzelachs-Umrichter .","link":"example.com"},"en_US":{"cat":"4","title":"1ctrlX ","description":"1The single-axis ","link":"1example.com"}},"XCD1":{"de_DE":{"cat":"435","title":"ctrlX ","description":"Die ","link":"example.com"},"en_US":{"cat":"4","title":"2ctrlX ","description":"2The single-axis ","link":"2example.com"}}}}];
const get_found_object = ({ cat: category_id, title, description, link }, material_id) => ({
material_id, category_id, title, description, link
});
function iterateObject(obj, parent_keys = []) {
let result = null;
for (prop in obj) { // prop is the key here (should have de_DE and object)
if (typeof(obj[prop]) == "object") { // obj[prop] is the value.
result = iterateObject(obj[prop], [prop, ...parent_keys]);
if(result) return result;
} else if (prop == "cat" && obj[prop] == 4) {
return get_found_object(obj, parent_keys[1]);
}
}
return null;
}
const result = data.reduce((acc, item) => acc || iterateObject(item), null);
console.log(result);
问题内容: 我有用户登录,并且我有2个错误处理程序 电子邮件和密码为空 电子邮件和密码与数据库不匹配 通过邮递员寄给我 用户名和密码为空,结果为 电子邮件和密码错误,结果是 我注意到第一个错误有对象错误,第二个没有 我的反应js代码是 如果我发送电子邮件和密码错误,我的问题是在此代码中 这行我有错误,这是我的控制台日志 我该如何处理此类错误? 问题答案: 查看您的请求处理代码和响应,我可以看到错误
我当前的代码 结果存储在对象中,但我对如何提取对象内部的数据感到困惑。 假设我想从< code>resultQuery对象中提取account表中的< code>name列
因此,我正在构建一种基于对象的模型方法,并试图将所有现有的jQuery转换为纯JavaScript调用,但我遇到了一些问题。 所以我有一个基本的基础: 由于某些原因,当使用jQuery调用时,它都运行得很好,但是当使用Document.QuerySelector调用JS替代项时,我会得到一个错误,如下所示: 谁能给我解释一下.find()调用和传统JS的主要区别是什么?
问题内容: 我有一个stdclass对象,如下所示: 我遍历了多个此类对象,其中一些具有 我想知道如果在以“父母”作为其值的“文本”之后出现“值”对象,我将如何访问? 问题答案: 您要查找的是Object [‘values’] [0]:“ values”是键映射,就像“ text”一样,[0]是您要访问的数组内的索引。因此,如果您想将ID深入巢中,则必须执行以下操作 要么 这应该给您/ m / 0
可能重复: 对象文字声明中的自引用 有没有办法在同一对象文本中访问属性名的值?类似这样的事情: