对象传播没有给出期望的结果

时间:2018-03-11 07:37:36

标签: javascript ecmascript-next

import java.util.*;


public class MaxPairwiseProduct {
static int getMaxPairwiseProduct(int[] numbers) {
    TreeSet<Integer> set = new TreeSet(Arrays.asList(numbers));
    int max1 = set.pollLast();
    int max2 = set.pollLast();
    int result = max1 * max2;
    return result;
}

public static void main(String[] args) {
    int[] numbers = {1, 2, 3};
    System.out.println(getMaxPairwiseProduct(numbers));
}

}

我收到了输出:let me={ name:"Shivendra", age:21 } let you={ name:"Neha", age:22 } let mergeMeAndYou={ ...me, ...you } console.log(mergeMeAndYou);

现在我没想到这个。任何人都可以解释这个结果吗? &安培;我现在将如何获得合并对象?我使用的是节点版本8.9.4。

4 个答案:

答案 0 :(得分:2)

您可以使用{}封闭对象,例如:{...obj}

let me={
   name:"Shivendra",
   age:21
}


let you={
   name:"Neha",
   age:22
}

//Putting the me and you on an array.
let mergeMeAndYou = [
   {...me},{ ...you}
]

console.log(mergeMeAndYou);

//Putting the me and you on an object.	
let mergeMeAndYou2 = {
   me:{...me}, you:{ ...you}
}

console.log(mergeMeAndYou2);

注意:根据您希望如何组合对象,您实际上不需要传播对象。你可以:

let mergeMeAndYou = [me,you];

let mergeMeAndYou2 = {me:me, you:you}

答案 1 :(得分:1)

我认为你误解了对象传播的作用。它将每个对象的属性列为新对象。如果使用多个对象执行此操作,则会将对象的属性合并到新对象中。如果多个扩展对象中存在相同的属性,则后一个对象中的属性将获胜。您是否希望将对象附加到新的父结构中?或者你期望看到什么?

如果您希望将对象放入父对象中,请尝试以下方法:

const us = { me, you }

或父数组:

const we = [ me, you ]

答案 2 :(得分:0)

查看结果。 mergeMeAndYou函数用'you'替换'me'对象,mergeYouAndMe函数替换'you'对象我

let me={
    name:"Shivendra",
    age:21
}


let you={
    name:"Neha",
    age:22
}


let mergeMeAndYou={
    ...me, ...you
}

let mergeYouAndMe={
    ...you, ...me
}

console.log(mergeMeAndYou);

console.log(mergeYouAndMe);

答案 3 :(得分:0)

对象文字中的扩展语法将对象属性复制到新对象上。

来自MDN docs

  

ECMAScript提案的Rest / Spread属性(第4阶段)将扩展属性添加到对象文字。它将自己的可枚举属性从提供的对象复制到新对象上。

提供的示例如下:

var obj1 = { foo: 'bar', x: 42 };
var obj2 = { foo: 'baz', y: 13 };

var clonedObj = { ...obj1 };
// Object { foo: "bar", x: 42 }

var mergedObj = { ...obj1, ...obj2 };
// Object { foo: "baz", x: 42, y: 13 }