提问人:TheIronKing 提问时间:8/23/2023 最后编辑:TheIronKing 更新时间:8/23/2023 访问量:40
从复杂的嵌套数组中提取值
Extract values from complex nested arrays
问:
我在节点中使用强肥皂来提取Netsuite中保存的搜索。 我已经取得了一些成功,但现在我在节点中拥有提取值所需的信息。
如果我对搜索查询的结果使用 util.inspect,那么我会得到搜索中所有信息的详细细分。
如果我只使用 console.log 打印结果,那么我会得到以下结果。
我需要的信息在 entityId 和 customFieldList 对象中。
如何访问这些对象?
[
{
'$attributes': { '$xsiType': [Object] },
basic: { entityId: [Object], customFieldList: [Object] }
},
{
'$attributes': { '$xsiType': [Object] },
basic: { entityId: [Object], customFieldList: [Object] }
},
{
'$attributes': { '$xsiType': [Object] },
basic: { entityId: [Object], customFieldList: [Object] }
},
{
'$attributes': { '$xsiType': [Object] },
basic: { entityId: [Object], customFieldList: [Object] }
},
{
'$attributes': { '$xsiType': [Object] },
basic: { entityId: [Object], customFieldList: [Object] }
},
{
'$attributes': { '$xsiType': [Object] },
basic: { entityId: [Object], customFieldList: [Object] }
}
]
感谢您到目前为止的帮助。
当我使用 util.inspect 时,上述每个部分都会像下面这样分解。我有星号表示敏感信息,但本质上我需要的值是 entityId 和 customField 的 searchValue。
{
status: { '$attributes': { isSuccess: 'true' } },
totalRecords: 6,
pageSize: 1000,
totalPages: 1,
pageIndex: 1,
searchId: '****************************************************************',
searchRowList: {
searchRow: [
{
'$attributes': {
'$xsiType': {
type: 'EmployeeSearchRow',
xmlns: 'urn:employees_2022_2.lists.webservices.netsuite.com'
}
},
basic: {
entityId: { searchValue: '*****' },
customFieldList: {
customField: [
{
'$attributes': {
internalId: '****',
scriptId: 'custentity_revenuetoday_stored',
'$xsiType': {
type: 'SearchColumnDoubleCustomField',
xmlns: 'urn:core_2022_2.platform.webservices.netsuite.com'
}
},
searchValue: '*****'
},
{
'$attributes': {
internalId: '****',
scriptId: 'custentity_wallboard_yn',
'$xsiType': {
type: 'SearchColumnBooleanCustomField',
xmlns: 'urn:core_2022_2.platform.webservices.netsuite.com'
}
},
searchValue: 'true'
}
]
}
}
},
塞巴斯蒂安(Sebastian)在下面的回答是如果您遇到同样的问题,则需要什么。我用他的代码是:
const searchRows = result.searchResult.searchRowList.searchRow;
searchRows.forEach((row) => {
const searchValue = row.basic.entityId.searchValue;
const customField = row.basic.customFieldList.customField.searchValue;
console.log(searchValue);
console.log(customField);
});
答:
1赞
Sebastian Kaczmarek
8/23/2023
#1
如果这是结果对象,则可以访问如下所示的单个值:
const query = {
status: { '$attributes': { isSuccess: 'true' } },
totalRecords: 6,
pageSize: 1000,
totalPages: 1,
pageIndex: 1,
searchId: '****************************************************************',
searchRowList: {
searchRow: [
{
'$attributes': {
'$xsiType': {
type: 'EmployeeSearchRow',
xmlns: 'urn:employees_2022_2.lists.webservices.netsuite.com'
}
},
basic: {
entityId: { searchValue: '*****' },
customFieldList: {
customField: [
{
'$attributes': {
internalId: '****',
scriptId: 'custentity_revenuetoday_stored',
'$xsiType': {
type: 'SearchColumnDoubleCustomField',
xmlns: 'urn:core_2022_2.platform.webservices.netsuite.com'
}
},
searchValue: '*****'
},
{
'$attributes': {
internalId: '****',
scriptId: 'custentity_wallboard_yn',
'$xsiType': {
type: 'SearchColumnBooleanCustomField',
xmlns: 'urn:core_2022_2.platform.webservices.netsuite.com'
}
},
searchValue: 'true'
}
]
}
}
},
// ... more results
]
}
};
const searchValue = query.searchRowList.searchRow[0].basic.entityId.searchValue;
const customField = query.searchRowList.searchRow[0].basic.customFieldList.customField;
console.log(searchValue);
console.log(customField);
请注意,我对索引进行了硬编码以访问第一个结果的值。如果要访问所有值,可以循环访问它们:0
const query = {
status: { '$attributes': { isSuccess: 'true' } },
totalRecords: 6,
pageSize: 1000,
totalPages: 1,
pageIndex: 1,
searchId: '****************************************************************',
searchRowList: {
searchRow: [
{
'$attributes': {
'$xsiType': {
type: 'EmployeeSearchRow',
xmlns: 'urn:employees_2022_2.lists.webservices.netsuite.com'
}
},
basic: {
entityId: { searchValue: '*****' },
customFieldList: {
customField: [
{
'$attributes': {
internalId: '****',
scriptId: 'custentity_revenuetoday_stored',
'$xsiType': {
type: 'SearchColumnDoubleCustomField',
xmlns: 'urn:core_2022_2.platform.webservices.netsuite.com'
}
},
searchValue: '*****'
},
{
'$attributes': {
internalId: '****',
scriptId: 'custentity_wallboard_yn',
'$xsiType': {
type: 'SearchColumnBooleanCustomField',
xmlns: 'urn:core_2022_2.platform.webservices.netsuite.com'
}
},
searchValue: 'true'
}
]
}
}
},
// ... more results
]
}
};
const searchRows = query.searchRowList.searchRow;
searchRows.forEach((row) => {
const searchValue = row.basic.entityId.searchValue;
const customField = row.basic.customFieldList.customField;
console.log(searchValue);
console.log(customField);
});
评论
0赞
TheIronKing
8/23/2023
塞巴斯蒂安,谢谢你。你是个天才。我没有使用确切的代码,因为我不需要查询部分,但本质上,这正是它。谢谢。
评论
objArray[index].basic.entityId
objArray[index].basic.customFieldList