【问题标题】:How to push item into array without removing last element如何在不删除最后一个元素的情况下将项目推入数组
【发布时间】:2021-09-08 17:12:45
【问题描述】:

当sameFriends = [];

'dick'、'rex'、'james' 被推入

当我添加“高尔夫”时,//输出删除詹姆斯

如何在不删除任何内容的情况下从 aFriend 和 bFriend 中添加相同元素的推送?

let aFriend = ['dick', 'rex', 'james', 'tom', 'jack'];
let bFriend = ['dick', 'rex', 'james', 'jake'];
let sameFriend = ['golf'];

for (let i = 0; i < aFriend.length; i++){
  for (let k = 0; k < bFriend.length; k++){
    if (aFriend[i] === bFriend[k]){
      sameFriend.push(bFriend[k]);
      console.log(sameFriend[k]);
    }
  }
}

【问题讨论】:

  • 您的代码虽然可以改进但可以正常工作。我看到这个输出:["golf","dick","re​​x","James"]。你期待什么?
  • console.log(sameFriend[k]);索引 k 用于数组 bFriend not sameFriend 女巫大小不同...
  • 你可以用一行代码做到这一点:console.log(sameFriend.concat(aFriend.filter(item => bFriend.indexOf(item) >= 0)));

标签: javascript push element


【解决方案1】:

您可以使用如下代码:

let aFriend = ['dick', 'rex', 'james', 'tom', 'jack'];
let bFriend = ['dick', 'rex', 'james', 'jake'];
let sameFriend = ['golf'];

for (let i = 0; i < aFriend.length; i++){
    for (let k = 0; k < bFriend.length; k++){
        if (aFriend[i] === bFriend[k]){
        sameFriend.push(bFriend[k]); //Here sameFriend array will have all elements which are same
       // console.log(sameFriend);
        }
    }
}
console.log(sameFriend);

【讨论】:

  • 感谢 @FZs 重新阅读详细信息并更新代码以反映所需的输出。
【解决方案2】:

方法一: 改变

console.log(sameFriend[k]);

console.log(bFriend[k]);

并添加

console.log(sameFriend); 

在进入'for循环'之前。

你推入 sameFriend 的元素没有存储在它的第 k 个索引处。 这就是詹姆斯没有被打印出来的原因。

方法二:

删除'for循环'内的控制台语句并添加

console.log(sameFriend);

在代码末尾打印sameFriend的所有元素

【讨论】:

  • 我希望它在 aFriend 和 bFriends 中打印相似的名称,并在 sameFriend 中包含元素。这就是我使用 .push() 的原因
  • 要么你可以在'for循环'之前打印sameFriend的元素,然后用我提到的改变继续'for循环'或者在代码末尾添加“console.log(sameFriend)”并删除“for循环”中的控制台语句。
猜你喜欢
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2019-10-05
  • 2021-12-28
相关资源
最近更新 更多