我有120个对象的数组(oldArray)。
我想制作另一个数组(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
。控制台显示[Object,Object,...]我尝试了很多事情,但没想到会对此感到困惑。我以为会是
newArray.push(oldArray[0])
或也许是newArray[0] = oldArray.splice(0,1)
,但我尝试执行的所有操作似乎都在造成相同的问题。使用对象数组是否有某种特殊技巧?
谢谢!
最佳答案
我尝试复制您的问题,这些是我的结果:
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
内容的示例数据将极大地帮助您解决问题。关于javascript - JavaScript对象数组无法正确推送,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20062227/