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() 检查,以便仅迭代您定义的那些属性。
添加回答
举报