我有一个包含120个对象的Array(oldArray)。 我想创建另一个Array(newArray),其第一个元素是oldArray的第一个元素。 看起来很简单,只是我的输出不是预期的。
var obj = oldArray[0];
newArray[0] = obj;
console.log(obj);
console.log(newArray);
console.log(newArray[0]);
console.log(oldArray);
console.log(oldArray[0]);
obj
,newArray[0]
和oldArray[0]
都会在我的控制台中生成相同的结果 - 我想要使用的单个对象。
newArray
显示oldArray
的所有对象,而不仅仅是我认为obj包含的对象。 newArray.length == 1
。控制台显示:[对象]
oldArray
是我原来的数组。 oldArray.length == 120
。控制台显示[对象,对象,...]
我尝试过很多东西,并没想到会挂在这上面。我以为它可能是newArray.push(oldArray[0])
或者newArray[0] = oldArray.splice(0,1)
,但我尝试的一切似乎都在创造同样的问题。
使用对象数组是否有某种特殊技巧?
谢谢!
答案 0 :(得分:2)
我试过复制你的问题,这些是我的结果:
var oldArray = ['a','b','c','d'];
var newArray = [];
var obj = oldArray[0]; // store the first value in a new variable
newArray[0] = obj; // push the variable's value to the first index of the new array
console.log(obj);
// 'a'
console.log(newArray);
// ['a']
console.log(newArray[0]);
// 'a' (the same as obj)
console.log(oldArray);
// ["a", "b", "c", "d"]
console.log(oldArray[0]);
// 'a'
根据脚本的范围和oldArray
中的数据,这些是正确的行为。您的测试用例未正确缩小或问题未反映在您的问题中。
由于我使用字符串而非对象进行测试,因此在您的特定用例中可能会有一些不同的行为,但提供一些有关oldArray
内容的示例数据将极大地帮助您解决问题。