セッションストレージを使用してデータを一時的に保持CatalogNumber
し、セッションデータ内の文字列()を検索しようとしています。文字列が存在しない場合は、追加したいと思います。
これは私がこれまでに試したことですが、それでも重複は許可されています。また、何らかの理由で配列の検索が機能していません。
var gridData = {
catalogNumber: dataItem.CatalogNumber,
fullName: dataItem.FullName,
position: dataItem.CurrentTitle
};
sessionStorageData = JSON.parse(sessionStorage.getItem('people'));
if (jQuery.inArray(gridData.catalogNumber, sessionStorageData ) === -1) {
sessionStorageData.push(gridData);
sessionStorage.setItem('people', JSON.stringify(sessionStorageData));
}
データ
[{"catalogNumber":"51263bf7-83c4-e411-825d-28b2bd14ba94","fullName":"John Doe","position":"Receptionist"}]
配列検索が機能していないことは理にかなっています。
配列はオブジェクトの配列です。gridData.catalogNumber
これらのオブジェクトに対して文字列(この場合)を照合しようとしています。
配列が文字列の配列である場合、検索は機能します。別のアプローチは次のとおりです。
function found(gridData, sessionStorageData) {
for (o in sessionStorageData) {
if (sessionStorageData[o].catalogNumber == gridData.catalogNumber) {
return true;
}
}
return false;
}
if (!found(gridData.catalogNumber, sessionStorageData )) {
sessionStorageData.push(gridData);
sessionStorage.setItem('people', JSON.stringify(sessionStorageData));
}
さらに良い解決策は、オブジェクトの配列を文字列の配列にマップすることです。
var catalogNumbers = sessionStorageData.filter(function(obj){ return !!obj }).map(function(obj) { return obj.catalogNumber; } );
if (jQuery.inArray(gridData.catalogNumber, catalogNumbers ) === -1) {
sessionStorageData.push(gridData);
sessionStorage.setItem('people', JSON.stringify(sessionStorageData));
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加