3 回答

TA貢獻1946條經驗 獲得超4個贊
當您進行拼接時 - 您從數組中刪除對象,這意味著您更改了它的長度以及剩余元素的索引。
所以你應該做的是,當你拼接時,你只需通過簡單地遞減你的值來“返回一次迭代” i:
// Sentences defined for the whole course
const Sentences = {
/******** ---Sentence Start--- ********/
1: {
type: 'sentence-chunk',
duration: { start: 32.281, end: 34.608 },
difficulty: 2,
clipSentence: {
threshold: 40,
reference: "Your Majesty,* they're* ready.",
expect: "expects_sentences"
},
extensions: [
{
threshold: 41,
reference: "reference_sentence",
expect: "expects_sentences"
},
{
threshold: 42,
reference: "reference_sentence",
expect: "expects_sentences"
},
{
threshold: 43,
reference: "reference_sentence",
expect: "expects_sentences"
},
],
},
/******** ---Sentence End--- ********/
/******** ---Sentence Start--- ********/
2: {
type: 'sentence-chunk',
duration: { start: 32.281, end: 34.608 },
difficulty: 2,
clipSentence: {
threshold: 40,
reference: "Your Majesty,* they're* ready.",
expect: "expects_sentences"
},
extensions: [
{
threshold: 41,
reference: "Your Highness,* they're* ready.",
expect: "expects_sentences"
},
{
threshold: 42,
reference: "Your Majesty,* the guests are* ready.",
expect: "expects_sentences"
},
{
threshold: 43,
reference: "Your Majesty,* they're* ready.",
expect: "expects_sentences"
},
],
},
/******** ---Sentence End--- ********/
}
modifySentences();
console.log(Sentences);
function modifySentences() {
for (const [key, sentence] of Object.entries(Sentences)) {
for(let i = 0; i < sentence.extensions.length; i++) {
if(sentence.extensions[i].reference === 'reference_sentence') {
console.log(i)
sentence.extensions.splice(i, 1);
--i; //here it is, you resetting index back, so you could check next object
}
}
}
}

TA貢獻1871條經驗 獲得超8個贊
簡單的數組映射和過濾方法就可以完成您的工作。
const Sentences = {
1: {
type: 'sentence-chunk',
duration: { start: 32.281, end: 34.608 },
difficulty: 2,
clipSentence: {
threshold: 40,
reference: "Your Majesty,* they're* ready.",
expect: 'expects_sentences',
},
extensions: [
{
threshold: 41,
reference: 'reference_sentence',
expect: 'expects_sentences',
},
{
threshold: 42,
reference: 'reference_sentence',
expect: 'expects_sentences',
},
{
threshold: 43,
reference: 'reference_sentence',
expect: 'expects_sentences',
},
],
},
2: {
type: 'sentence-chunk',
duration: { start: 32.281, end: 34.608 },
difficulty: 2,
clipSentence: {
threshold: 40,
reference: "Your Majesty,* they're* ready.",
expect: 'expects_sentences',
},
extensions: [
{
threshold: 41,
reference: "Your Highness,* they're* ready.",
expect: 'expects_sentences',
},
{
threshold: 42,
reference: 'Your Majesty,* the guests are* ready.',
expect: 'expects_sentences',
},
{
threshold: 43,
reference: "Your Majesty,* they're* ready.",
expect: 'expects_sentences',
},
],
},
};
const ret = Object.entries(Sentences).map(([, sentence]) => {
sentence.extensions = sentence.extensions.filter(
(x) => x.reference !== 'reference_sentence'
);
return sentence;
});
console.log(ret);

TA貢獻2080條經驗 獲得超4個贊
你可以嘗試
function modifySentences() {
? ? for (const key of Object.keys(Sentences)) {
? ? ? if (Sentences.hasOwnProperty(key)) {
? ? ? ? ?Sentences[key].extensions = Sentences[key].extensions.filter(ext => ext.reference !== "reference_sentence")
? ? ? }
? ? }
}
需要 hasOwnProperty() 檢查,以便僅迭代您定義的那些屬性。
添加回答
舉報