Почему я могу обновить файл, принадлежащий root, используя sudo vi, но не добавлять к нему строку с помощью sudo echo "Thing" >> файла?

我有两个JavaScript数组。

var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];

我希望输出的结果是

var array3 = ["Vijendra","Singh","Shakya"];

输出的数组应该去掉重复的字。

我如何在JavaScript中合并两个数组,以便从每个数组中只得到唯一的项目,其顺序与插入原始数组的顺序相同?

解决办法

只需合并数组(不删除重复部分)即可

ES5版本使用Array.concat

var array1 = ["Vijendra", "Singh"];
var array2 = ["Singh", "Shakya"];

console.log(array1.concat(array2));

ES6版本使用[destructuring][2]。

const array1 = ["Vijendra","Singh"];
const array2 = ["Singh", "Shakya"];
const array3 = [...array1, ...array2];

由于没有 "内置 "的方法来删除重复的内容([ECMA-262][1]实际上有Array.forEach,这将是很好的方法),我们必须手动完成。


Array.prototype.unique = function() {
    var a = this.concat();
    for(var i=0; i
评论(16)

新的解决方案(使用Array.prototype.indexOfArray.prototype.concat)。


Array.prototype.uniqueMerge = function( a ) {
    for ( var nonDuplicates = [], i = 0, l = a.length; i
评论(16)
//Array.indexOf was introduced in javascript 1.6 (ECMA-262) 
//We need to implement it explicitly for other browsers, 
if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt, from)
  {
    var len = this.length >>> 0;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}
//now, on to the problem

var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];

var merged = array1.concat(array2);
var t;
for(i = 0; i < merged.length; i++)
  if((t = merged.indexOf(i + 1, merged[i])) != -1)
  {
    merged.splice(t, 1);
    i--;//in case of multiple occurrences
  }

其他浏览器的`indexOf'方法的实现取自MDC

评论(6)