Javascript 循环遍历一个json,找到具有特定首字母的所有键,并将其放入另一个json中
我想循环使用我的json,找到所有键及其值的前两个字母QM 这是我的json: 解决办法应该是Javascript 循环遍历一个json,找到具有特定首字母的所有键,并将其放入另一个json中,javascript,node.js,json,Javascript,Node.js,Json,我想循环使用我的json,找到所有键及其值的前两个字母QM 这是我的json: 解决办法应该是 QMSI: [{ QM6_QMSI2: '1899-12-30 15:36:57', Qm_7QMSI5: 'lucas' }] 我已尝试过此代码,但它不适用于我: var results = []; var newJson = json[0]; var len = Object.keys(json[0]).length; for (var i = 0;
QMSI: [{
QM6_QMSI2: '1899-12-30 15:36:57',
Qm_7QMSI5: 'lucas'
}]
我已尝试过此代码,但它不适用于我:
var results = [];
var newJson = json[0];
var len = Object.keys(json[0]).length;
for (var i = 0; i < len; i++) {
if (newJson[i].indexOf("QM") == 0) results.push(newJson[i]);
}
console.log(results);
}
你可以用
为阵列中的每个对象生成一个新对象,该对象仅包含要查找的属性:
var json=[{
MHF46:‘Ledig’,
MHF181:'06',
QM6_QMSI2:‘1899-12-30 15:36:57’,
Qm_7QMSI5:“卢卡斯”,
mEntry9:'123123',
mEntry3:‘2019-08-28’
}, {
MHF46:‘Ledig’,
MHF181:'06',
QM6_QMSI21:'xxx1899-12-30 15:36:57',
Qm_7QMSI51:“xxxlucas”,
mEntry9:'123123',
mEntry3:‘2019-08-28’
}];
var result=json.mapfunctione{
var newe={};
对于e中的var i{
如果i.toUpperCase.startsWith'QM'{
newe[i]=e[i];
}
};
返回newe;
};
console.logresult
var json=[{MHF46:'Ledig',
MHF181:'06',
QM6_QMSI2:‘1899-12-30 15:36:57’,
Qm_7QMSI5:“卢卡斯”,
mEntry9:'123123',
mEntry3:‘2019-08-28’
} ]
var results=JSON.parseJSON.stringifyjson[0];
Object.keysresults.forEachkey=>{
if!key.toLocaleLowerCase.startWithQM
删除结果[键]
}
控制台。日志结果 有很多方法可以做到这一点,这里是一个过滤器和减少的例子 常量输入=[ {MHF46:'Ledig', MHF181:'06', QM6_QMSI2:‘1899-12-30 15:36:57’, Qm_7QMSI5:“卢卡斯”, mEntry9:'123123', mEntry3:‘2019-08-28’ } ]; const output=Object.keysinput[0] .filterkey=>key.toLowerCase.substring0,2==='qm' .reduceobj,key=>{ obj[key]=输入[0][key]; 返回obj; }, {}; console.logoutput 另一个变体使用Object.entries而不是Object.keys来获取键/值对,因此我们不必两次引用输入[0]。并使用Object.fromEntries将结果转换回对象,而不是手动映射或减少它 常量输入=[{ MHF46:‘Ledig’, MHF181:'06', QM6_QMSI2:‘1899-12-30 15:36:57’, Qm_7QMSI5:“卢卡斯”, mEntry9:'123123', mEntry3:‘2019-08-28’ }]; 常量输出=[ Object.fromEntries Object.entries输入[0]。筛选器[prop]=>prop.toLowerCase.startsWith'qm' ];
console.log输出 也许这能帮你
var desired_values = {}
json.forEach( function(item) {
var keys = Object.keys(item);
keys.filter(j => {if(j.substr(0,1) == 'Q'){
desired_keys[j] = item[j]
}})
})
console.log(desired_values)
}
//result -> {QM6_QMSI2: '1899-12-30 15:36:57', Qm_7QMSI5: 'lucas'}
您忘了定义newJson变量。您想只在该对象上循环,还是数组中可以有更多对象?数组中只有一个对象您想只比较键,所以使用var newJson=object.keysjson[0];
var desired_values = {}
json.forEach( function(item) {
var keys = Object.keys(item);
keys.filter(j => {if(j.substr(0,1) == 'Q'){
desired_keys[j] = item[j]
}})
})
console.log(desired_values)
}
//result -> {QM6_QMSI2: '1899-12-30 15:36:57', Qm_7QMSI5: 'lucas'}