如何在不使用任何内置函数的情况下向数组中添加元素

3

关于JavaScript语言,我有以下两个问题:

  1. 是否有任何方法可以在不使用push()函数或者其他内置函数的情况下向数组中追加元素?

  2. 是否有任何方法可以在不使用concat()函数或者其他内置函数的情况下将两个数组合并起来?


3
  1. 你尝试了什么?
  2. 为什么你想这样做?
- CodingIntrigue
1
“我需要制作一个不使用苹果的苹果派。” 祝你好运。 - Marc B
1
JavaScript 有一个 append() 函数吗? - j08691
3
挑战的意义在于挑战自己。如果你向别人询问答案,那么这就不是一个真正的挑战了。 - cookie monster
1
我刚才点赞了这个问题,因为我不明白给它踩的意义所在。 - Marecky
显示剩余6条评论
7个回答

7

对于第一部分,您可以始终使用数组的长度属性来添加下一个元素:

a = ['a', 'b', 'c', 'd'];
a[a.length] = 'e'; 

// a is now ["a", "b", "c", "d", "e"]

为了实现这一点,合并数组,如果没有函数,您可以通过循环遍历数组,应该选择最大的一个进行循环。但是,正如评论所述,通常没有很好的理由这样做。

有趣的是,这种方法应该比“push”更快,因为你不需要调用函数,而是直接使用索引。 - VisioN

4

这里为您提供了几种选择:

  1. To add the item to the array without push call:

    arr[arr.length] = value;
    
  2. To concatenate one array to another without concat call:

    for (var i = 0; i < arr2.length; arr1[arr1.length] = arr2[i++]);
    

2

不确定这是否是你所寻找的或原因所在,但是arr[arr.length] = 1;是你两个问题的答案。

var myArr = [];
myArr[myArr.length] = 1;
myArr[myArr.length] = 2;
myArr[myArr.length] = 3;

var myArr1 = [...]; // has items;
var myArr2 = [...]; // has items;
var mergedArr = [];

for(var i = 0; i < myArr1.length){
    mergedArr[mergedArr.length] = myArr1[i];
}

for(var i = 0; i < myArr2.length){
    mergedArr[mergedArr.length] = myArr2[i];
}

是否也有可能在不使用 pop 的情况下进行删除? - Vikas Bansal
@VikasBansal 如果你想要的是减少数组长度,那么 arr.length = arr.length - 2 就可以了。如果你还需要最后一个元素,在这段代码之前使用 arr[arr.length - 1] - Onur Topal
不错的技巧 @onur,但如果您想删除第一个元素(例如在队列中),该怎么办? - Vikas Bansal
@VikasBansal 除了循环,我想不到其他的方法。 - Onur Topal

1

是的,你可以使用ES6的扩展语法(...)来实现,而不需要使用.push、concat或.length方法:

var arr = [1, 2];  // arr is 1, 2
var arr = [...arr, 3];  // arr is now 1, 2, 3

let arr1 = [1, 2]; <br>
let arr2 = [3, 4]; <br>
arr = [...arr1, ...arr2];  // arr is now 1, 2, 3, 4

0

希望这能解决你的问题:

const addItem = (arr, ...arguments) => {
  for (let i = 0; i < arguments.length; i++) {
    arr[arr.length] = arguments[i];
  }
  return arr;
};

let myArr = [];

console.log(addItem(myArr, 'Chaewon')); // ['Chaewon'])
console.log(addItem(myArr, 'Liz')); // ['Chaewon', 'Liz']);

0
<html lang="en">
<head>
<script>
    let data = [20, 80, 79, 21, 40];
    let newEl = 26;
    let position = 2;
    console.log(data);

 for(let i = data.length-1; i >= 0; i--){
    console.log(data[i]);
    if (i >= position) {
        data[i + 1]= data[i];
        if (i === position) {
            data[i]= newEl;
        }

    }
 }
 console.log(data)
</script>
</head>
<body>
    
</body>
</html>

0
function pop(arr) {
  let finalVar = arr[arr.length - 1];
  arr.length = arr.length - 1;

  return finalVar;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接