2017-10-07 42 views
0

工会如何工作? 为什么它以随机顺序结合我的数组?为什么lodash联盟洗牌我的对象?

有没有一种方法可以让我兴奋地结合我的result订单?

result ids

result = { 
-KvpYbfRfqMXLOsGH7fh : "-KvpYbfRfqMXLOsGH7fh", 
-KvpYcMTcRQk5KYawqdR : "-KvpYcMTcRQk5KYawqdR", 
-KvpYcjvkVfdC9a4Q9FO : "-KvpYcjvkVfdC9a4Q9FO", 
-KvpYd9-1mbm016eV4MZ : "-KvpYd9-1mbm016eV4MZ", 
-KvpYduO7YXkW1DoEQak : "-KvpYduO7YXkW1DoEQak", 
-KvpYeMtsePxGrvdoBEd : "-KvpYeMtsePxGrvdoBEd", 
-KvpYfPluPG5q4e_D35w : "-KvpYfPluPG5q4e_D35w", 
-KvpYgGSQsrpR0g_084h : "-KvpYgGSQsrpR0g_084h", 
-KvpYgpOGrwjnxy9F7SF : "-KvpYgpOGrwjnxy9F7SF", 
-KvpYhU_NXWYIfC2H-UM : "-KvpYhU_NXWYIfC2H-UM", 
} 
    const result = Object.keys(action.response.result) 
    return { 
     ...state, 
     ids: _.union(result, state.ids), 
    } 
+0

它采用了'Set'所以为了不保留对象。 – pvg

+1

请提供能够复制问题的代码和数据。图像几乎没有用处。 – trincot

+1

根据文档,它使用SameValueZero(http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)。由于这些是字符串,它归结为SameValueNonNumber(http://ecma-international.org/ecma-262/7.0/#sec-samevaluenonnumber)。 “如果x和y是完全相同的代码单元序列(相同长度和相应索引处的相同代码单元),则返回true;否则返回false。”所以没有字母顺序。 – Walk

回答

0

的JavaScript对象平原属性名称不存储在一个特定的顺序。

您可以使用MapSetArray存储在一个特定的顺序

let arr = ["a", "b", "c"]; 
let map = new Map(); 
arr.forEach(value => map.set(value, {[value]:value})); 

let b = map.get("b"); 

let res = [...map.values()]; 

JSON.stringify(b) === JSON.stringify(res.find(prop => Object.keys(prop).pop() === "b")); 

JSON.stringify(b) === JSON.stringify(res[1]); 
+0

我用这个'Ob​​ject.keys(o).sort()'得到了预期的结果可以使用它吗? – vzhen

+0

如果数组足够,是的。 – guest271314