当我传递title和author的值时,我想首先检查是否存在其他具有相同标题的值。如果存在,则不要将数据输入到空数组中;如果不存在,则输入数据。但是我没有得到答案。我在哪里做错了。
var add = (title, author) => {
var i = 0;
var notes = [];
var note = {
title,
author
};
for (i = 0; i < notes.length; i++) {
if (note.title === notes[i].title) {
console.log('same entry');
} else {
notes.push(note);
}
};
console.log(notes[i]);
};
add("TITLE", "AUTHOR")
答案 0 :(得分:1)
您需要使用全局notes
,因为对于每个调用,此数组都是空的。如果您发现具有相同title
的条目,则需要返回该函数。
如果在数组中找不到标题,最后推送一个新对象。
var notes = [], // global or outside of the function
add = (title, author) => {
var i;
for (i = 0; i < notes.length; i++) {
if (title === notes[i].title) { // check title
console.log('same entry');
return; // exit function if title exists
}
};
notes.push({ title, author }); // no title found, add new object
};
console.log(notes);
add('a', 'b');
console.log(notes);
add('a', 'b');
console.log(notes);
add('c', 'd');
console.log(notes);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
注意长度在您的情况下始终为0。检查音符长度是否为0,即先按下,如果为true,则添加到音符中,否则执行您的逻辑。
//take it out of function
var notes = [];
var add = (title,author)=>{
//Check if notes length o if true the add to notes
var note={ title, author };
if(notes.length ==0)
notes.push(note);
else{
for(var i = 0; i < notes.length;i++){
if(title ===notes[i].title)
console.log('same entry');
else
notes.push(note);
};
};
}
add('Javascript','abc');
add('Javascript','xyz');
add('java','lmn');
console.log(notes);
答案 2 :(得分:0)
您的代码中有很多问题。 1-
var notes = [];
此行在每次调用add(title,auther)时都会初始化notes数组,这将使其每次都为空。所以您需要全局定义它。
2-
for (i = 0; i < notes.length; i++) {
if (note.title === notes[i].title) {
console.log('same entry');
} else {
notes.push(note);
}
};
这部分将注释移到notes数组中每个与注释一不具有相同标题的元素的notes数组中。这将导致对同一元素进行多次添加。
按照@Nina Scholz的解决方案
答案 3 :(得分:0)
请检查以下代码,我认为这可能会解决您的问题...
var notes = [];
var add = (title, author) => {
var i = 0;
//var notes = []; // declared globally
var note = {
title,
author
};
if (notes.length == 0) {
notes.push(note);
} // added this to add first record
else {
for (i = 0; i < notes.length; i++) {
if (note.title === notes[i].title) {
console.log('same entry');
} else {
notes.push(note);
}
};
}
console.log(notes[i]);
};
console.log(notes);
add('a', 'b');
console.log(notes);
add('a', 'b');
console.log(notes);
add('c', 'd');
console.log(notes);