我有这个包含一些数据的json对象,我正在对该对象进行搜索,当结果匹配时我想将它保存到另一个对象。什么是最好的方法。
我需要一些帮助,将我想要的数据复制到新变量中。
这就是我所拥有的。
myjson = JSON.parse(jsonData);
for(var x=0; x<myjson.ROWCOUNT;x++){
if(myjson.DATA.PARTNUMBER[x].search(regex) != -1){
console.log(myjson.DATA.PARTNUMBER[x]);
}
}
如果我有显示部件号的console.log,我该怎么做才能复制X行的所有内容?
myjson有4列(ID,PARTNUMBER,DESCRIPTION,PRICE),但我只搜索partnumber。我需要将所有内容复制到新的json对象。
感谢。
答案 0 :(得分:0)
myjson.DATA [x]是对包含匹配的PARTNUMBER的对象的引用。根据您要对其执行的操作,您可以将其用于阵列以供将来访问。 E.g:
myCopies = [];
myjson = JSON.parse(jsonData);
for(var x=0; x<myjson.ROWCOUNT;x++){
if(myjson.DATA.PARTNUMBER[x].search(regex) != -1){
console.log(myjson.DATA.PARTNUMBER[x]);
myCopies.push(myjson.DATA[x]);
}
}
// myCopies now contains references to all objects matched by partnumber
答案 1 :(得分:0)
您可以使用该帖子中的克隆功能复制对象 How do I correctly clone a JavaScript object?
function clone(obj) {
if (null == obj || "object" != typeof obj) return obj;
var copy = obj.constructor();
for (var attr in obj) {
if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];
}
return copy;
}
它不会根据其结构复制您的对象。
答案 2 :(得分:-1)
如果有匹配的对象,简单的方法是硬复制所有属性
var myjson = JSON.parse(jsonData),
output = [],
matchedObj
;
for(var x=0; x<myjson.ROWCOUNT;x++){
if(myjson.DATA.PARTNUMBER[x].search(regex) != -1){
output.push({
ID: myjson.DATA.ID[x],
PARTNUMBER: myjson.DATA.PARTNUMBER[x],
DESCRIPTION: myjson.DATA.DESCRIPTION[x],
PRICE: myjson.DATA.PRICE[x]
});
}
}
console.log(output);
另一种方法是定义一个简单的函数来克隆匹配对象的所有属性
var myjson = JSON.parse(jsonData),
output = [],
matchedObj,
clone = function(data, i) {
var copy = {};
for(var attribute in data) {
if (data.hasOwnProperty(attribute )) {
copy[attribute] = data[attribute][i];
}
}
return copy;
}
;
for(var x=0; x<myjson.ROWCOUNT;x++){
if(myjson.DATA.PARTNUMBER[x].search(regex) != -1){
output.push(clone(myjson.DATA, x));
}
}
console.log(output);